❕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 variableESX
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, commeserver.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
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 ?