TypeError: Cannot read properties of undefined
Skrypt spodziewał się jakiejś informacji i nie dostał nic. To ta sama klasa problemu co najczęstszy błąd w Lua.
Zrób najpierw to
Zanotuj, który skrypt jest wymieniony; rozwiązanie jest w kodzie tego skryptu.
Co to znaczy
Javascriptowa wersja "attempt to index a nil value". Sięgnięto po coś na wartości, która jest undefined albo null. Komunikat podaje właściwość, co mówi, który dostęp padł, ale nie mówi, której wartości brakowało.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Obiekt gracza, który nie istnieje
Skrypt serwerowy szukający gracza, który się rozłączył.
- 2
Zapomniane await
const rows = db.query(...)bezawaitdaje Promise, a odczyt pola z niego to undefined. - 3
Destrukturyzacja brakującego obiektu
const { id } = payload, kiedypayloadnigdy nie przyszedł. - 4
Dane zdarzenia, których klient nie wysłał
Ta sama klasa błędu co w wersji z Lua, tylko na drugim środowisku.
- 5
Eksport z zasobu, który nie jest uruchomiony
exports['x'].y, gdzie obiekt eksportów jest undefined.
Jak poznać, który jest twój
console.log(typeof thing, thing)
bezpośrednio nad wadliwą linią. We FXServerze wypisuje się to w konsoli serwera jak każde inne wyjście.
Gdzie szukać
Wskazana linia, a potem przypisanie, które wyprodukowało wartość undefined.
Jak to naprawić
Używaj opcjonalnego łańcuchowania i wartości domyślnych na granicy:
const player = getPlayer(src)
if (!player) return
const amount = payload?.amount ?? 0
const rows = await db.query('SELECT ...')Wciąż utknąłeś na własnym kodzie?
Ta strona mówi, co ten błąd zwykle oznacza. Wklej swoją konsolę do Server Fixera, a uszereguje wszystko, co w niej jest, i powie, co zrobić najpierw; a jeśli wolisz tego nie ruszać, ORBIE naprawi skrypt i odda ci zasób gotowy do wrzucenia.
bug_reportOtwórz Server FixerDla tego rodzaju błędu Script Optimizer czyta skrypt i naprawia kod stojący za tym.