Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

466
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!