AWS Lambda测试运行报SyntaxError: Unexpected end of input如何解决?
AWS Lambda SyntaxError: Unexpected end of input 排查方案
核心问题定位
该报错属于Node.js加载代码阶段抛出的语法错误,意味着解析代码/输入时未找到预期的闭合标记,直接触发原因有两类,按出现概率从高到低排序:
- 测试事件JSON格式非法
- 部署的Lambda功能源码存在未闭合的括号、引号、大括号
- 代码修改后未执行部署操作,仍运行旧的错误版本
具体问题&修复步骤
1. 优先修复测试事件JSON错误
你当前提供的测试事件存在多个语法问题,直接会导致解析失败:
body字段的JSON字符串存在未转义的裸换行,JSON标准不允许字符串值直接换行- 大量键名末尾带有多余空格:
httpMethod、queryStringParameters、pathParameters、requestContext、cognito:username、PickupLocation,会导致代码中取对应字段时返回undefined queryStringParameters、pathParameters错误加了引号,变成字符串"null"而非null类型
修正后的测试事件参考:
{ "path": "/ride", "httpMethod": "POST", "headers": { "Accept": "*/*", "Authorization": "eyJraWQiOiJLTzRVMWZs", "content-type": "application/json; charset=UTF 8" }, "queryStringParameters": null, "pathParameters": null, "requestContext": { "authorizer": { "claims": { "cognito:username": "the_username" } } }, "body": "{\"PickupLocation\": {\"Latitude\":47.6174755835663,\"Longitude\":-122.28837066650185}}" }
2. 校验功能源码语法
你贴出的JS源码语法本身没有问题,但如果复制部署时存在内容截断,会触发语法错误,可通过本地Node.js快速校验:
- 将功能源码保存为
index.js文件 - 本地执行命令:
node -c index.js - 无任何输出则代表语法合法,有错误输出可直接定位到未闭合的行位置
3. 确认Lambda部署生效
修改代码或测试事件后,必须点击Lambda控制台右上角的橙色Deploy按钮,等待部署完成后再执行测试,否则运行的仍是上一个错误版本的代码。
后续可选检查
语法问题解决后如果出现权限/资源不存在错误,可补充检查:
- 确认代码中写的DynamoDB表名
AWSIES-jeremie.agravante在当前AWS区域已存在 - 确认Lambda执行角色已附加
dynamodb:PutItem权限,允许写入目标DynamoDB表
内容的提问来源于stack exchange,提问作者Jeremie
相关产品推荐
相关产品推荐

