Atasi “attempt to index a nil value” di script FiveM (ESX, QBCore, xPlayer)

Error Lua ini berarti sebuah script memakai sesuatu yang tidak ada seolah-olah itu tabel. Bagian dalam kurung, seperti global 'ESX' atau local 'xPlayer', menunjukkan apa yang hilang, dan masing-masing punya perbaikan berbeda.

Oleh tim Nodewave · Diperbarui 8 November 2026

Baca errornya dulu

Konsol server dan konsol F8 menampilkan error seperti ini:

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

Nama resource, file, dan nomor baris muncul lebih dulu, jadi Anda tahu persis ke mana harus melihat. Kata-kata dalam kurung menyatakan apa yang nil:

Dalam kurungArtinya biasanya
global 'ESX'Script tidak pernah mendapat objek ESX, atau ESX tidak berjalan saat script dimulai.
global 'QBCore'Sama untuk QBCore.
local 'xPlayer' atau 'Player'Framework tidak punya objek pemain untuk pemain itu.
field 'Jobs' atau nama lainTabelnya ada tetapi key-nya tidak ada, karena data atau file konfigurasi tidak dimuat.

Atasi global 'ESX'

  1. Start ESX lebih dulu. Di server.cfg, taruh ensure es_extended di atas setiap script yang memakainya, dan periksa konsol untuk error dari es_extended sendiri, yang butuh koneksi database agar bisa start.
  2. Impor ESX di script. Tambahkan baris ini ke fxmanifest.lua script:
shared_script '@es_extended/imports.lua'

Atau atur objeknya di Lua, di dekat bagian atas file:

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

Script lama memakai TriggerEvent('esx:getSharedObject', ...). Event itu sudah tidak ada di ESX saat ini, jadi ganti dengan export di atas.

Atasi global 'QBCore'

Definisikan objeknya di bagian atas setiap file Lua yang memakainya:

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

Sebuah local di satu file tidak terlihat di file lain, jadi script yang jalan di client/main.lua tetap bisa gagal di client/events.lua. Start qb-core sebelum script di server.cfg. Qbox menyertakan lapisan kompatibilitas untuk sebagian besar script QBCore, tetapi pastikan script itu mendukungnya.

Atasi local 'xPlayer'

ESX.GetPlayerFromId(source) dan QBCore.Functions.GetPlayer(source) mengembalikan nil saat pemain belum dimuat, sudah keluar, atau ID-nya salah. Selalu periksa hasilnya sebelum memakainya:

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

Alasan umum pemain tidak ada:

Atasi field yang hilang

Jika tabel ada tetapi sebuah key bernilai nil, data di baliknya tidak dimuat. Periksa bahwa file konfigurasi terdaftar di fxmanifest.lua sebelum file yang memakainya, namanya dieja sama di mana-mana, dan versi script cocok dengan versi framework Anda. Framework mengganti nama fungsi antar versi, dan script yang ditulis untuk versi lama jadi rusak.

Periksa dasar-dasarnya

Masih belum berhasil?

Tanyakan ke pembuat script dengan teks error lengkap, file dan barisnya, framework Anda beserta versinya, dan urutan start dari server.cfg.

Host server FiveM Anda di Singapura

Ping rendah untuk pemain di India, Malaysia, dan Indonesia, di AMD EPYC dengan NVMe dan perlindungan DDoS Gcore di setiap IP.

Hosting FiveM di Singapura →