TypeError: no se pueden leer propiedades de undefined
Un script esperaba alguna información y recibió nada. Es la misma clase de problema que el error de Lua más común.
Haz esto primero
Anota qué script nombra; el arreglo está en el código de ese script.
Qué significa
La versión de JavaScript de «attempt to index a nil value». Se accedió a algo sobre un valor que es undefined o null. El mensaje nombra la propiedad, lo que te dice qué acceso falló pero no qué valor faltaba.
Qué lo provoca
Ordenado por la frecuencia con la que es la respuesta.
- 1
Un objeto de jugador que no existe
Un script de servidor buscando a un jugador que se desconectó.
- 2
Un await que se olvidó
const rows = db.query(...)sinawaitda una Promise, y leerle un campo da undefined. - 3
Desestructurar un objeto que falta
const { id } = payloadcuandopayloadno llegó nunca. - 4
Un dato de evento que el cliente no mandó
La misma clase de fallo que la versión de Lua, en el otro runtime.
- 5
Un export de un recurso que no está arrancado
exports['x'].ydonde el objeto de exports es undefined.
Cómo saber cuál es el tuyo
console.log(typeof cosa, cosa)
justo encima de la línea que falla. En FXServer esto se imprime en la consola del servidor como cualquier otra salida.
Dónde mirar
La línea que nombra, y después la asignación que produjo el valor undefined.
Cómo arreglarlo
Usá encadenamiento opcional y valores por defecto en la frontera:
const player = getPlayer(src)
if (!player) return
const amount = payload?.amount ?? 0
const rows = await db.query('SELECT ...')¿Sigues atascado en tu propio código?
Esta página es lo que suele significar este error. Pega tu consola en Server Fixer y ordenará todo lo que haya en ella y te dirá qué hacer primero; y si prefieres no tocarlo, ORBIE puede reparar el script y devolverte el recurso listo para soltar.
bug_reportAbrir el Server FixerPara este tipo de error, el Script Optimizer lee el script y repara el código que hay detrás.