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.

lambda node.js Error de sintaxis JSON inesperado en la posición 0

Aquí hay un código que he escrito en Lambda para obtener datos de una URL e insertar parámetros en DynamoDB.

const AWS = require('aws-sdk');
const ddb = new AWS.DynamoDB.DocumentClient({region: 'ap-southeast-1'});

exports.handler = async (event, context, callback) => {
    var obj = JSON.parse(JSON.stringify(event.queryStringParameters));
    const requestId = context.awsRequestId;
    await createMessage(requestId).then(() => {
        callback(null, {
            statusCode: 200,
            body: `
            <h1>parámetros de cadena de consulta</h1>
            ${JSON.stringify(event.queryStringParameters)}
            uno: ${obj.one}
            <hr>
            <h1>ruta</h1>
            ${JSON.stringify(event.requestContext.http.path)}
            <hr>
           `,
            headers: {
                 'Content-Type' :  'text/html; charset=uft-8',
            }
        });
    }).catch((err) => {
        console.error(err)
    })
};

function createMessage(requestId) {
    const params = {
        TableName: 'Message',
        Item: {
            'messageId' : '321',
        }
    }
    return ddb.put(params).promise();
}

Aquí está la respuesta:

{
  "errorType": "SyntaxError",
  "errorMessage": "Unexpected token u in JSON at position 0",
  "trace": [
    "SyntaxError: Unexpected token u in JSON at position 0",
    "    at JSON.parse (<anonymous>)",
    "    at Runtime.exports.handler (/var/task/index.js:5:20)",
    "    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
  ]
}

Puedes ver la solicitud aquí

¿Qué debo hacer a continuación para solucionar el error “unexpected token u in JSON at position 0”?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error “Token inesperado u en JSON en la posición 0” ocurre porque el código está intentando analizar JSON, pero la entrada no es un JSON válido. En este caso, es probable que event.queryStringParameters sea nulo o indefinido, lo que está causando un error de análisis.

    Para solucionar este error, puedes agregar una comprobación de nulidad antes de analizar el JSON. También puedes modificar el código para manejar el caso en que event.queryStringParameters sea nulo o indefinido.

    Aquí tienes un ejemplo de código con la comprobación de nulidad:

    exports.handler = async (event, context, callback) => {
        const requestId = context.awsRequestId;
        await createMessage(requestId).then(() => {
            let obj = {};
            if (event.queryStringParameters) {
                obj = JSON.parse(JSON.stringify(event.queryStringParameters));
            }
            callback(null, {
                statusCode: 200,
                body: `
                <h1>parámetros de cadena de consulta</h1>
                ${JSON.stringify(event.queryStringParameters)}
                uno: ${obj.one}
                <hr>
                <h1>ruta</h1>
                ${JSON.stringify(event.requestContext.http.path)}
                <hr>
               `,
                headers: {
                    'Content-Type' : 'text/html; charset=uft-8',
                }
            });
        }).catch((err) => {
            console.error(err)
        })
    };
    

    En este código, agregamos una comprobación de nulidad para event.queryStringParameters y asignamos un objeto vacío a obj si es nulo o indefinido. Esto evitará que ocurra el error de análisis de JSON.

Comments are closed.