❕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 variableESXest 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 = nilpar :
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 = nilpar :
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.luaDans 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.
Mis à jour
Ce contenu vous a-t-il été utile ?