„attempt to index a nil value” in FiveM-scripts oplossen (ESX, QBCore, xPlayer)

Deze Lua-fout betekent dat een script iets dat niet bestaat heeft gebruikt alsof het een tabel was. Het deel tussen haakjes, zoals global 'ESX' of local 'xPlayer', vertelt wat ontbreekt, en elk heeft een andere oplossing.

Door het Nodewave-team · Bijgewerkt op 8 november 2026

Lees eerst de fout

De serverconsole en de F8-console tonen de fout zo:

SCRIPT ERROR: @my_script/server/main.lua:12: attempt to index a nil value (global 'ESX')

De resourcenaam, het bestand en het regelnummer staan voorop, dus je weet precies waar je moet kijken. De woorden tussen haakjes zeggen wat nil is:

Tussen haakjesWat het meestal betekent
global 'ESX'Het script kreeg het ESX-object nooit, of ESX draaide niet toen het script startte.
global 'QBCore'Hetzelfde voor QBCore.
local 'xPlayer' of 'Player'Het framework heeft geen spelerobject voor die speler.
field 'Jobs' of een andere naamDe tabel bestaat maar de sleutel ontbreekt, omdat gegevens of een configbestand niet zijn geladen.

global 'ESX' oplossen

  1. Start ESX eerst. Zet in server.cfg ensure es_extended boven elk script dat het gebruikt, en controleer de console op fouten van es_extended zelf, dat zijn databaseverbinding nodig heeft om te starten.
  2. Importeer ESX in het script. Voeg deze regel toe aan de fxmanifest.lua van het script:
shared_script '@es_extended/imports.lua'

Of stel het object in Lua in, bovenaan het bestand:

ESX = exports["es_extended"]:getSharedObject()

Oude scripts gebruiken TriggerEvent('esx:getSharedObject', ...). Dat event bestaat niet meer in het huidige ESX, vervang het dus door de export hierboven.

global 'QBCore' oplossen

Definieer het object bovenaan elk Lua-bestand dat het gebruikt:

local QBCore = exports['qb-core']:GetCoreObject()

Een local in het ene bestand is niet zichtbaar in een ander, dus een script dat in client/main.lua werkt kan in client/events.lua nog steeds falen. Start qb-core vóór het script in server.cfg. Qbox bevat een compatibiliteitslaag voor de meeste QBCore-scripts, maar controleer of het script die ondersteunt.

local 'xPlayer' oplossen

ESX.GetPlayerFromId(source) en QBCore.Functions.GetPlayer(source) geven nil terug als de speler nog niet geladen is, is vertrokken of de ID fout is. Controleer het resultaat altijd voordat je het gebruikt:

local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return end

Veelvoorkomende redenen dat de speler ontbreekt:

Een ontbrekend veld oplossen

Bestaat een tabel maar is een sleutel nil, dan zijn de gegevens erachter niet geladen. Controleer of het configbestand in fxmanifest.lua vóór de bestanden staat die het gebruiken, of de naam overal hetzelfde is gespeld en of de scriptversie bij je frameworkversie past. Frameworks hernoemen functies tussen versies, en scripts voor een oudere versie gaan dan stuk.

Controleer de basis

Kom je er nog steeds niet uit?

Vraag de maker van het script, met de volledige fouttekst, het bestand en de regel, je framework en de versie ervan, en de startvolgorde uit server.cfg.

Host je FiveM-server in Singapore

Lage ping voor spelers in India, Maleisië en Indonesië, op AMD EPYC met NVMe en Gcore DDoS-bescherming op elk IP.

FiveM-hosting in Singapore →