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

使用Middy官方中间件触发SyntaxError,自定义中间件可正常运行

问题分析与解决方案

问题根源

Unexpected token '??=' 错误是因为代码中使用了Node.js 14不支持的ES2021语法(空赋值运算符)。你的Lambda运行环境是Node.js 14,但Middy官方中间件(如httpJsonBodyParser、httpErrorHandler)的内部代码包含了该语法,而你的编译流程没有将这些依赖代码转译为Node.js 14兼容的版本,导致运行时触发语法错误。

解决方案

1. 升级Lambda运行时版本(推荐)

Node.js 14已终止官方维护,直接将Lambda运行时升级到Node.js 16或更高版本(Node.js 16及以上原生支持??=运算符),无需修改代码或编译配置即可解决问题。

2. 降级Middy到兼容Node.js 14的版本

如果必须保留Node.js 14运行时,可降级Middy至v2.x系列(Middy v3+版本要求Node.js 16+)。执行以下命令:

npm install middy@2.x

同时确保所有Middy官方中间件也使用对应v2版本(如@middy/http-json-body-parser@2.x、@middy/http-error-handler@2.x)。

3. 配置打包工具转译依赖代码

若坚持使用当前Middy版本和Node.js 14,需配置打包工具(如esbuild、webpack)将node_modules中的Middy相关代码一起转译为Node.js 14兼容语法:

  • 以esbuild为例,打包命令添加目标参数:
esbuild src/handler.ts --bundle --platform node --target node14 --outfile dist/handler.js
  • 若使用TypeScript直接编译,需确保tsconfig.json的target设为ES2020(Node.js 14支持的最高ES版本),同时使用tsc结合ts-node或其他工具转译依赖代码(注意:默认tsc不会转译node_modules,可能需要额外配置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:57:05