Corriger l'erreur "global 'ESX'" sur ESX Legacy (v1.4.0+)

Depuis la version ESX Legacy (v1.4.0 et plus), le framework ESX a subi de nombreuses modifications pour améliorer les performances et l'optimisation globale. Ces changements nécessitent une adaptation

📌 Contexte

  • Si vous utilisiez l’ancien système basé sur essentialmode, une mise à jour vers ESX Legacy nécessite une refonte quasi complète de vos ressources.

  • Le script de base du framework est désormais es_extended.


❌ Problème rencontré

Sur le client :

Vous verrez une erreur dans la console FiveM :

Une tentative d'accès à un index nil, signifiant que la variable ESX est appelée alors qu’elle n’a pas été définie.

Sur le serveur :

Vous pouvez voir des erreurs comme :

global 'ESX' (a nil value) Cela empêche certains scripts, comme server.lua, de se charger correctement.


🛠 Résolution

Côté Client :

Étape 1 : Redéfinir l’objet ESX

Dans vos scripts clients, remplacez :

ESX = nil

par :

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

Étape 2 : Supprimer les anciennes méthodes d’init

Supprimez toute ancienne logique d’attente de l'objet ESX, du type :

Citizen.CreateThread(function()
    while ESX == nil do
        TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
        Citizen.Wait(0)
    end
end)

Côté Serveur :

Étape 1 : Remplacer l’ancienne initialisation

Comme pour le client, remplacez :

ESX = nil

par :

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

Étape 2 : Supprimer la logique obsolète

Supprimez le même type de code de récupération de l'objet ESX basé sur des TriggerEvent, qui est désormais dépassé.


⚙️ Mise à jour du fxmanifest.lua

Dans le fichier fxmanifest.lua de votre ressource, ajoutez la ligne suivante :

shared_scripts { '@es_extended/imports.lua' }

Exemple :

fx_version 'cerulean'
game 'gta5'

shared_scripts {
    '@es_extended/imports.lua'
}

client_scripts {
    'client.lua'
}

server_scripts {
    'server.lua'
}

Une fois ces modifications apportées :

  • Redémarrez votre serveur.

  • Les erreurs liées à global 'ESX' devraient avoir disparu.

Dernière mise à jour

Cet article vous a-t-il été utile ?