Un callback de la NUI no se dispara nunca
Un botón del menú de un script no hace nada al pulsarlo, y normalmente tampoco aparece nada en la consola.
Haz esto primero
Repórtaselo al vendedor. No hay nada en tu instalación que cause esto.
Qué significa
El lado del navegador le mandó algo al cliente y no pasó nada. Normalmente no hay ningún error en ninguno de los dos lados, y eso es lo que lo vuelve frustrante: el botón sencillamente no hace nada.
Qué lo provoca
Ordenado por la frecuencia con la que es la respuesta.
- 1
La URL no coincide con el nombre del recurso
fetch('https://my-script/buy')tiene que usar el nombre EXACTO del recurso. Un guion contra un guion bajo falla en silencio. - 2
El nombre del callback no coincide
RegisterNUICallback('buy', ...)contesta a.../buy, no a.../Buy. - 3
Nunca se llama a cb
El lado de Lua tiene que llamar a
cb(...). Sin eso la promesa del navegador no se resuelve nunca, así que la interfaz se cuelga aunque el manejador se haya ejecutado. - 4
El fetch no lleva cuerpo POST
La NUI de FiveM espera un POST. Un GET, o un POST sin cuerpo, puede no enrutarse.
- 5
La interfaz no tiene el foco
Los callbacks funcionan sin foco, pero el CLIC que tendría que disparar uno no llega a la página.
SetNUIFocus(true, true)es lo que deja que el cursor interactúe.
Cómo saber cuál es el tuyo
Abrí las herramientas de desarrollo de la NUI y mirá la pestaña de red: ¿la petición sale siquiera? Si no, es la página o el foco. Si sale y se queda colgada, el manejador no está llamando a cb. Si da 404, el nombre está mal.
Dónde mirar
La URL del fetch en la página, y el nombre de RegisterNUICallback en el script del cliente. Tienen que coincidir exactamente.
Cómo arreglarlo
-- cliente
RegisterNUICallback('buy', function(data, cb)
-- hacer la cosa
cb({ ok = true }) -- contestá SIEMPRE, aunque falle
end)
// página
await fetch(`https://${GetParentResourceName()}/buy`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ item: 'water' }),
})¿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 Loading Screen Creator construye NUI que funciona sin escribir HTML a mano.