Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

449
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda