TypeError : impossible de lire les propriétés de undefined
Un script attendait une information et n'a rien reçu. C'est la même classe de problème que l'erreur Lua la plus courante.
Faites d'abord ceci
Notez le script qu'elle nomme ; le correctif est dans le code de ce script.
Ce que ça veut dire
La version JavaScript de « attempt to index a nil value ». Quelque chose a été lu sur une valeur undefined ou null. Le message nomme la propriété, ce qui indique quel accès a échoué mais pas quelle valeur manquait.
Ce qui la provoque
Classé par fréquence : la cause la plus probable en premier.
- 1
Un objet joueur qui n'existe pas
Un script serveur qui cherche un joueur déconnecté.
- 2
Un await oublié
const rows = db.query(...)sansawaitdonne une Promise, et en lire un champ donne undefined. - 3
Déstructurer un objet manquant
const { id } = payloadalors quepayloadn'est jamais arrivé. - 4
Des données d'événement que le client n'a pas envoyées
La même classe de bug que la version Lua, sur l'autre runtime.
- 5
Un export d'une ressource non démarrée
exports['x'].yoù l'objet d'exports est undefined.
Comment savoir laquelle est la vôtre
console.log(typeof chose, chose)
juste au-dessus de la ligne fautive. Dans FXServer, cela s'affiche dans la console du serveur comme n'importe quelle autre sortie.
Où regarder
La ligne nommée, puis l'affectation qui a produit la valeur undefined.
Comment la corriger
Utilisez le chaînage optionnel et des valeurs par défaut à la frontière :
const player = getPlayer(src)
if (!player) return
const amount = payload?.amount ?? 0
const rows = await db.query('SELECT ...')Toujours bloqué sur votre propre code ?
Cette page explique ce que cette erreur signifie en général. Collez votre console dans Server Fixer : il classera tout ce qui s'y trouve et vous dira quoi faire en premier ; et si vous préférez ne pas y toucher, ORBIE peut réparer le script et vous rendre la ressource prête à déposer.
bug_reportOuvrir le Server FixerPour ce type d'erreur, le Script Optimizer lit le script et répare le code derrière tout ça.