You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda写入DynamoDB报Unexpected end of input错误如何解决

问题解决方案

1. 修复语法错误

当前代码触发SyntaxError: Unexpected end of input的直接原因是handler函数缺少闭合的}标记,JS解析器读取到代码末尾仍未找到匹配的闭合符号,直接抛出语法错误。

2. 修正DynamoDB参数格式

你使用的原始AWS.DynamoDB客户端要求所有属性必须显式指定数据类型,比如字符串类型需要写为{S: "属性值"},直接传入原生字符串会触发参数校验错误。建议改用AWS.DynamoDB.DocumentClient客户端,可自动完成JS类型到DynamoDB属性类型的映射,无需手动标注类型。

3. 适配Lambda异步执行逻辑

原代码用回调形式调用putItem方法,Lambda handler不会等待异步回调执行完成就会结束进程,会出现请求返回200但数据库写入操作还未执行的情况。改用async/await写法可保证写入操作完成后再返回响应。

4. 校验执行角色权限

确认Lambda绑定的执行角色已添加对应milos-Shop表的dynamodb:PutItem权限,否则即使代码正确也会写入失败。

修正后可直接运行的完整代码

const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: 'us-east-2'});

exports.handler = async (event) => {
    const params = {
        Item: {
            ShopId: "User_" + Math.random(),
            name: event.name,
            address: event.address,
            city: event.city
        },
        TableName: "milos-Shop"
    };
    
    try {
        const res = await docClient.put(params).promise();
        console.log('写入成功', res);
        return {
            statusCode: 200,
            body: JSON.stringify({
                success: true,
                data: res
            })
        };
    } catch (err) {
        console.error('写入失败', err);
        return {
            statusCode: 500,
            body: JSON.stringify({
                success: false,
                error: err.message
            })
        };
    }
};

内容的提问来源于stack exchange,提问作者Miloš Milutinov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:24:03