es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El servidor NodeJS realiza una solicitud POST, pero devuelve HTTPErrorResponse.

Estoy utilizando HttpClient de Angular para realizar una solicitud POST a mi servidor NodeJS, de la siguiente manera:

createData(data:any):Observable<any> {
    // verificar el tipo de contenido es necesario para asegurarse de que el objeto JSON se envía como
    // objeto JSON al servidor NodeJS
    const options = {
      headers: new HttpHeaders({
          'Content-Type': 'application/json',
      })
  };
  // Esto sigue lanzando un error de HTTPResponse -
  // SyntaxError: Token inesperado A en JSON en la posición 0 en JSON.parse
    return this._http.post(`${this.apiUrl}`, data, options);
  }

Y la función POST de mi servidor está configurada de la siguiente manera:

router.post('/', async (req,res) => {
        const body = req.body;
        await database.execute(`
            INSERT INTO Post (
                title,
                body,
                date_added
            ) VALUES (
                @title,
                @body,
                NOW()
            )
            `, {
                title: body.title,
                body: body.body,
            })
        res.end('Added post')
    })

Cuando se llama a createData, se realiza el método POST (verifiqué el panel de Red en las herramientas de desarrollo, la respuesta “Added post” se devuelve desde el servidor y se envía mi objeto JSON como carga útil), pero la consola aún devuelve este HTTPErrorResponse:

SyntaxError: Token inesperado A en JSON en la posición 0 en JSON.parse (<anónimo>) en XMLHttpRequest.onLoad (http://localhost:4200/vendor.js:7508:51) en ZoneDelegate.invokeTask (ht..

¿Cuál podría ser la causa de este error, si la función del servidor ha tenido éxito?</anónimo>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error ocurre cuando HttpClient de Angular intenta analizar la respuesta del servidor como JSON, pero recibe una respuesta que no se puede analizar como JSON. El mensaje de error señala específicamente un token inesperado “A” en la posición 0, lo que indica que la respuesta comienza con la letra “A”, que no es una sintaxis JSON válida.

    Esto podría significar que la respuesta del servidor en realidad no está devolviendo un objeto JSON, a pesar de que la cabecera “Content-Type” se establece en “application/json”. Es posible que el servidor esté devolviendo una cadena en su lugar, que podría comenzar con la letra “A” u otro carácter inesperado.

    Para solucionar este problema, puedes intentar registrar la respuesta del servidor para ver exactamente qué se está devolviendo. También puedes intentar establecer un punto de interrupción en el código donde ocurre el error para inspeccionar el objeto de respuesta y ver cómo se ve.

    Si el problema es realmente que el servidor no está devolviendo un objeto JSON, es posible que debas modificar el código del servidor para asegurarte de que esté devolviendo un objeto JSON correctamente formateado. Alternativamente, puedes modificar el código de Angular para manejar las respuestas no JSON de manera adecuada, tratándolas como cadenas en lugar de objetos JSON.

Comments are closed.