You need to enable JavaScript to run this app. AWS Lambda SQS Node.js函数报Unexpected end of JSON input错误求助
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda SQS Node.js函数报Unexpected end of JSON input错误求助

问题定位与解决

这个报错的触发阶段是Lambda运行时加载部署代码的初始化环节,完全没有执行到你写的SQS处理函数、也没有解析你构造的测试事件,和这两部分内容无关。很多开发者遇到这个错会第一时间排查测试事件的JSON格式,实际上这个阶段运行时还没有加载测试事件,完全不存在解析事件JSON的逻辑。
结合报错栈的Unexpected end of JSON input特征,常见的触发原因有三类:

  • 未完成TypeScript编译就直接部署源文件:Lambda的Node.js运行时无法直接解析TypeScript的类型注解、TS专属语法,加载阶段解析失败就会抛出这类通用语法错误
  • 打包产物不完整:Serverless插件打包时漏了函数入口文件,部署到运行时的入口文件是空内容,运行时读不到有效代码就会触发空输入解析异常
  • Handler路径配置错误:serverless.yml里配置的函数入口指向了不存在的空文件,运行时加载时拿到空文件内容,直接报语法解析错误
排查与解决步骤
  • 优先核查部署后的实际代码:
    登录Lambda控制台,进入对应函数的「代码」标签页,直接打开你配置的handler对应的部署文件,确认三个检查点:
    • 文件不是空内容
    • 代码是编译完成的纯JS语法,没有TypeScript类型注解残留
    • 文件里确实导出了和handler名匹配的函数方法
  • 核对本地编译与打包配置:
    • 检查tsconfig.json的编译输出配置:确认module选项设置为CommonJS,outDir指向实际的打包输出目录,不要把TS源文件、未编译的类型文件直接纳入部署包
    • 核对serverless.yml里的handler路径,必须和实际编译后的产物路径、导出的函数名完全匹配。比如编译后代码在dist/handler.js文件中导出updateDailyForecastResults方法,配置就要写dist/handler.updateDailyForecastResults
  • 做排除法快速定位:
    临时把部署的入口文件替换成无依赖的最简纯JS代码测试:
    exports.updateDailyForecastResults = async (event) => {
      console.log("Function invoked");
      return;
    };
    
    如果替换后测试正常运行,说明问题完全出在之前的编译、打包、路径配置环节,不需要再调整业务代码或者测试事件结构。

内容的提问来源于stack exchange,提问作者arda ersoy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 14:06:01