Node.js v18识别??运算符报错,安装@aws-sdk/client-s3后应用崩溃
问题描述
安装@aws-sdk/client-s3依赖时触发语法错误,具体报错信息如下:
/home/ec2-user/test-server/node_modules/@smithy/smithy-client/dist-cjs/index.js:852 requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], ^ SyntaxError: Invalid or unexpected token at Module._extensions..js (node:internal/modules/cjs/loader:1414:10) Node.js v18.19.0 [nodemon] app crashed - waiting for file changes before starting...
Node.js v18原生支持??空值合并运算符,移除@aws-sdk/client-s3版本号前的^以锁定版本后,错误仍在其依赖包@smithy/smithy-client中重现。
解决方案
- 锁定
@smithy/smithy-client兼容版本:执行npm list @smithy/smithy-client查看当前安装的版本,在package.json的overrides字段(npm 8+支持)中指定一个与Node.js 18兼容的旧版本,例如"@smithy/smithy-client": "^2.0.0"。 - 彻底清理依赖缓存:删除项目根目录下的
node_modules文件夹、package-lock.json文件,执行npm cache clean --force清除npm缓存,再重新执行npm install,确保依赖树完全更新为指定版本。 - 确认Node.js运行环境:执行
node -v验证当前终端使用的Node.js版本确实为18.19.0,避免因多版本Node.js环境导致实际运行版本低于18。 - 降级
@aws-sdk/client-s3版本:若锁定子依赖无效,直接在package.json中指定一个明确兼容Node.js 18的@aws-sdk/client-s3版本,例如"@aws-sdk/client-s3": "^3.400.0",该版本的依赖未引入不兼容语法。
内容的提问来源于stack exchange,提问作者Terry Windwalker
相关产品推荐
相关产品推荐

