THE ORB
Studio wird gestartet

Ein NUI-Callback löst nie aus

Ein Button im Menü eines Scripts tut beim Klick nichts, und meist erscheint auch nichts in der Konsole.

groupsButtons tun nichtscodeBraucht einen Entwickler

Mach das zuerst

Meld es dem Verkäufer. In deiner Einrichtung gibt es nichts, was das verursacht.

bug_reportFüg lieber deine ganze Konsole ein

Was es bedeutet

Die Browserseite hat an den Client gepostet, und nichts ist passiert. Meist gibt es auf keiner Seite einen Fehler — genau das macht es zermürbend: Der Button tut einfach nichts.

Was es auslöst

Sortiert danach, wie oft es die Antwort ist.

  1. 1

    Die URL passt nicht zum Resource-Namen

    fetch('https://my-script/buy') muss den EXAKTEN Resource-Namen verwenden. Ein Bindestrich gegen einen Unterstrich scheitert stillschweigend.

  2. 2

    Der Callback-Name passt nicht

    RegisterNUICallback('buy', ...) antwortet auf .../buy, nicht auf .../Buy.

  3. 3

    cb wird nie aufgerufen

    Die Lua-Seite muss cb(...) aufrufen. Sonst löst sich das Promise im Browser nie auf, und die Oberfläche hängt, obwohl der Handler gelaufen ist.

  4. 4

    Der Fetch hat keinen POST-Body

    Die NUI von FiveM erwartet ein POST. Ein GET oder ein POST ohne Body wird eventuell nicht geroutet.

  5. 5

    Die Oberfläche hat keinen Fokus

    Callbacks funktionieren ohne Fokus, aber der KLICK, der einen auslösen soll, erreicht die Seite nicht. SetNUIFocus(true, true) erlaubt dem Cursor erst die Interaktion.

Wie du erkennst, welcher deiner ist

Öffne die NUI-Entwicklerwerkzeuge und schau in den Netzwerk-Tab: Geht die Anfrage überhaupt raus? Wenn nicht, liegt es an der Seite oder am Fokus. Geht sie raus und hängt, ruft der Handler kein cb auf. Kommt ein 404, stimmt der Name nicht.

Wo du nachsehen musst

Die Fetch-URL in der Seite und der Name in RegisterNUICallback im Client-Script. Sie müssen exakt übereinstimmen.

Wie du es behebst

-- Client
RegisterNUICallback('buy', function(data, cb)
    -- die Sache tun
    cb({ ok = true })          -- antworte IMMER, auch bei einem Fehlschlag
end)

// Seite
await fetch(`https://${GetParentResourceName()}/buy`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ item: 'water' }),
})

Hängst du immer noch an deinem eigenen Code?

Diese Seite sagt, was dieser Fehler üblicherweise bedeutet. Füg deine Konsole in Server Fixer ein: es sortiert alles darin und sagt dir, was zuerst dran ist; und wenn du lieber nicht ranwillst, kann ORBIE das Script reparieren und dir die Resource fertig zum Einsetzen zurückgeben.

bug_reportServer Fixer öffnen

Für diese Art Fehler Loading Screen Creator baut NUI, die ohne handgeschriebenes HTML funktioniert.

Fehler, die mit diesem zusammen auftreten