Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

250
Vistas
"Error de sintaxis no detectado: token l inesperado en JSON en la posición 0", pero aún funciona, ¿por qué?

Primera vez que uso websockets con Go y obtengo un error extraño que no interrumpe el programa, y aún continúa como si no fuera un problema. El cliente es una aplicación de página única de ReactJS.

Cliente JS:

 const socket = new WebSocket("ws://localhost:5000/ws"); setConnection(socket); socket.onmessage = (e) => { const message = JSON.parse(e.data) console.log("message:", message) switch (message.Command) { case "loginResult": if (message.Result) { console.log("login worked"); }else{ console.log("login did not work"); } break; } }

Fragmento de Go está obteniendo JSON de:

 result := ws.LoginResult{ BaseMessage: ws.BaseMessage{ Command: "loginResult", }, Result: false, } b, err := json.Marshal(result) if err != nil { fmt.Println(err) return } if err = conn.WriteMessage(msgType, b); err != nil { return }

Y la salida:

 in here WebsocketProvider.tsx:20 message: {Command: 'loginResult', Result: false} WebsocketProvider.tsx:27 login did not work VM3502:1 Uncaught SyntaxError: Unexpected token l in JSON at position 0 at JSON.parse (<anonymous>) at WebSocket.socket.onmessage (WebsocketProvider.tsx:19) socket.onmessage @ WebsocketProvider.tsx:19

¿Alguien tiene alguna idea de por qué este es el caso?

Se encontró la solución:

  • Tenía que ver con la migración del código y que una línea sobrante estaba haciendo una llamada que se ignoró, por lo tanto, no hizo ninguna diferencia en la ejecución. No tiene nada que ver con que el formato JSON sea diferente, ya que las bibliotecas de Go lo generaron automáticamente.
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

la función que ha escrito para onmessage se ejecutará cada vez que se reciba un mensaje websocket válido .

De acuerdo con el registro de depuración que ha publicado, la parte que funcionó fue cuando recibió JSON válido del servidor y la función se ejecutó hasta su finalización, como lo demuestra esta línea:

 WebsocketProvider.tsx:27 login did not work

Marque el número de línea.

Después de esto obtienes:

 VM3502:1 Uncaught SyntaxError: Unexpected token l in JSON at position 0 at JSON.parse (<anonymous>) at WebSocket.socket.onmessage (WebsocketProvider.tsx:19) socket.onmessage @ WebsocketProvider.tsx:19

marque el número de línea :19 Esta es la línea con su JSON.parse .

Mi conjetura sería que este es un nuevo mensaje json no válido y de hecho entró en pánico aquí y el resto de la función no se ejecutó; el bit que se ejecutó fue un mensaje anterior con json válido .

En cuanto a por qué falló, coloque un archivo console.log antes de su JSON.parse como lo sugiere @emptyhua para ver qué está recibiendo exactamente.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda