THE ORB
Uruchamiam studio

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.

groupsTa funkcja przestaje działaćcodePotrzebny programista

Zrób najpierw to

Zanotuj, który skrypt jest wymieniony; rozwiązanie jest w kodzie tego skryptu.

bug_reportWklej zamiast tego całą konsolę

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. 1

    Obiekt gracza, który nie istnieje

    Skrypt serwerowy szukający gracza, który się rozłączył.

  2. 2

    Zapomniane await

    const rows = db.query(...) bez await daje Promise, a odczyt pola z niego to undefined.

  3. 3

    Destrukturyzacja brakującego obiektu

    const { id } = payload, kiedy payload nigdy nie przyszedł.

  4. 4

    Dane zdarzenia, których klient nie wysłał

    Ta sama klasa błędu co w wersji z Lua, tylko na drugim środowisku.

  5. 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 Fixer

Dla tego rodzaju błędu Script Optimizer czyta skrypt i naprawia kod stojący za tym.

Błędy, które chodzą z tym w parze