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

452
Vistas
¿Cómo deshacerse del "token 0 inesperado en JSON en la posición 0"? ¿A qué hora se muestra realmente este error? ¿Cuál es la principal razón para mostrar este error?

En primer lugar, por favor, no me critiques. Soy principiante y comencé a aprender el servidor y a trabajar en él. Pero casi todo el tiempo encontré regularmente este error. Busco esta pregunta y quiero saber correctamente al respecto. Pero ahora me estoy confundiendo más porque no sé la razón principal por la que se muestra este error. Entonces, por favor ayúdame. Como principiante, son los únicos errores que me frustran mucho.

En la línea de comando encontré este error

 SyntaxError: Unexpected token 1 in JSON at position 0 at JSON.parse (<anonymous>) at createStrictSyntaxError (C:\Projects\book-stock-server\node_modules\body-parser\lib\types\json.js:160:10) at parse (C:\Projects\book-stock-server\node_modules\body-parser\lib\types\json.js:83:15) at C:\Projects\book-stock-server\node_modules\body-parser\lib\read.js:128:18 at AsyncResource.runInAsyncScope (node:async_hooks:199:9) at invokeCallback (C:\Projects\book-stock-server\node_modules\raw-body\index.js:231:16) at done (C:\Projects\book-stock-server\node_modules\raw-body\index.js:220:7) at IncomingMessage.onEnd (C:\Projects\book-stock-server\node_modules\raw-body\index.js:280:7) at IncomingMessage.emit (node:events:402:35) at endReadableNT (node:internal/streams/readable:1343:12)

En el lado del cliente, básicamente quiero disminuir la cantidad 1 por 1 haciendo clic en el botón (handleDelivered) y enviar la cantidad como una solicitud al servidor para almacenar la cantidad en la base de datos MongoDB. Pero cuando implemento esta funcionalidad, no funciona y muestra ese error en la línea de comando.

 const handleDelivered = () => { const updatedQuantity = { quantity: quantity - 1 }; const url = `http://localhost:5000/books/${id}`; (async () => { try { const res = await fetch(url, { method: "PUT", headers: { 'Content-type': 'application/json' }, body: JSON.stringify(updatedQuantity.quantity) }) const data = await res.json(); if (data.modifiedCount >= 1) { setbookInfo({ ...bookInfo, quantity: updatedQuantity.quantity }); } } catch (err) { console.error(err); toast.error("There was a server side error"); } })(); }

Aquí en el lado del servidor hice exactamente para almacenar la cantidad en la base de datos y enviar la respuesta al cliente

 const id = req.params.id; const updatedQuantity = req.body; const filter = { _id: ObjectId(id) }; const option = { upsert: true }; const updatedDoc = { $set: { quantity: updatedQuantity.quantity } }; const result = await bookCollection.updateOne(filter, updatedDoc, option); res.send(result); })
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Esto es causado por body-parser .

En esta línea dice:

 if (first !== '{' && first !== '[') {

… pero la especificación JSON se cambió hace años para permitir que el tipo de datos de nivel superior en un texto JSON sea cualquier tipo de datos JSON y no solo una matriz u objeto.

Está enviando un número como su tipo de datos JSON de nivel superior, que está permitido por la especificación JSON actual, pero que hace que body-parser , en su configuración predeterminada, arroje un error.


Puede cambiar body-parser para admitir la especificación actual con una opción de configuración :

estricto

Cuando se establece en verdadero, solo aceptará matrices y objetos; cuando sea falso aceptará cualquier cosa que JSON.parse acepte. El valor predeterminado es verdadero.

Alternativamente, una solución alternativa sería enviar un objeto en lugar de un número:

 body: JSON.stringify(updatedQuantity)

Debería cambiar el código del lado del servidor para leer req.body.quantity en lugar de req.body

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