Node.js应用使用AWS SDK v3上传S3时加载错误排查求助
Node.js + AWS SDK v3 上传S3时加载语法错误排查
问题背景
开发Node.js应用,使用AWS SDK v3上传文件到S3,程序加载时触发语法错误,附相关代码及错误栈,请求解决。
相关依赖配置
"dependencies": { "@aws-sdk/client-s3": "^3.332.0", "@aws-sdk/lib-storage": "^3.332.0" }
初始化代码
const { Upload } = require('@aws-sdk/lib-storage'); const { S3Client } = require("@aws-sdk/client-s3"); const stream = 'node:stream'; const client = new S3Client({});
上传逻辑代码
function fileWriteStreamHandler(file) { const body = new stream.PassThrough(); const upload = new Upload({ client, params: { Key: `files/${Date.now().toString()}-${file.originalFilename}`, ContentType: file.mimetype, ACL: 'public-read', Bucket: s3Config.bucket, Body: body, }, }); const uploadRequest = upload.done().then((response) => { file.location = response.Location; }); s3Uploads.push(uploadRequest); return body; }
错误信息
发生错误。错误内容:C:\...\node_modules\@aws-sdk\client-s3\dist-cjs\runtimeConfig.js:32 runtime: "node", ^^^^^^^ 语法错误:意外的标识符 'runtime' 在 internalCompileFunction (node:internal/vm:73:18) 在 wrapSafe (node:internal/modules/cjs/loader:1159:20) 在 Module._compile (node:internal/modules/cjs/loader:1203:27) 在 Module._extensions..js (node:internal/modules/cjs/loader:1293:10) 在 Module.load (node:internal/modules/cjs/loader:1096:32) 在 Module._load (node:internal/modules/cjs/loader:935:12) 在 Module.require (node:internal/modules/cjs/loader:1120:19) 在 require (node:internal/modules/helpers:112:18) 在 Object.<anonymous> (C:\...\node_modules\@aws-sdk\client-s3\dist-cjs\S3Client.js:18:25) 在 Module._compile (node:internal/modules/cjs/loader:1239:14) 在 Module._extensions..js (node:internal/modules/cjs/loader:1293:10) 在 Module.load (node:internal/modules/cjs/loader:1096:32) 在 Module._load (node:internal/modules/cjs/loader:935:12) 在 Module.require (node:internal/modules/cjs/loader:1120:19) 在 require (node:internal/modules/helpers:112:18) 在 Object.<anonymous> (C:...\node_modules\@aws-sdk\client-s3\dist-cjs\S3.js:98:20) 在 Module._compile (node:internal/modules/cjs/loader:1239:14) 在 Module._extensions..js (node:internal/modules/cjs/loader:1293:10) 在 Module.load (node:internal/modules/cjs/loader:1096:32) 在 Module._load (node:internal/modules/cjs/loader:935:12) 在 Module.require (node:internal/modules/cjs/loader:1120:19) 在 require (node:internal/modules/helpers:112:18) 堆栈跟踪重复:C:\...\node_modules\@aws-sdk\client-s3\dist-cjs\runtimeConfig.js:32 runtime: "node", ^^^^^^^ 语法错误:意外的标识符 'runtime' 在 internalCompileFunction (node:internal/vm:73:18) 在 wrapSafe (node:internal/modules/cjs/loader:1159:20) 在 Module._compile (node:internal/modules/cjs/loader:1203:27) 在 Module._extensions..js (node:internal/modules/cjs/loader:1293:10) 在 Module.load (node:internal/modules/cjs/loader:1096:32) 在 Module._load (node:internal/modules/cjs/loader:935:12) 在 Module.require (node:internal/modules/cjs/loader:1120:19) 在 require (node:internal/modules/helpers:112:18) 在 Object.<anonymous> (C:\...\node_modules\@aws-sdk\client-s3\dist-cjs\S3Client.js:18:25) 在 Module._compile (node:internal/modules/cjs/loader:1239:14) 在 Module._extensions..js (node:internal/modules/cjs/loader:1293:10) 在 Module.load (node:internal/modules/cjs/loader:1096:32) 在 Module._load (node:internal/modules/cjs/loader:935:12) 在 Module.require (node:internal/modules/cjs/loader:1120:19) 在 require (node:internal/modules/helpers:112:18) 在 Object.<anonymous> (C:\...\node_modules\@aws-sdk\client-s3\dist-cjs\S3.js:98:20) 在 Module._compile (node:internal/modules/cjs/loader:1239:14) 在 Module._extensions..js (node:internal/modules/cjs/loader:1293:10) 在 Module.load (node:internal/modules/cjs/loader:1096:32) 在 Module._load (node:internal/modules/cjs/loader:935:12) 在 Module.require (node:internal/modules/cjs/loader:1120:19) 在 require (node:internal/modules/helpers:112:18) 进程即将重启。
解决方法
- 升级Node.js版本:AWS SDK v3从3.x版本开始要求Node.js v14或更高版本,当前错误是因为Node.js版本过低不支持SDK中的语法。运行
node -v查看当前版本,升级到v14.x及以上的LTS版本(推荐v18或v20)。 - 修复初始化代码错误:
const stream = 'node:stream';这行写法错误,应改为const stream = require('node:stream');,否则无法调用stream.PassThrough()。 - 重新安装依赖:
- 删除
node_modules和package-lock.json:rm -rf node_modules package-lock.json - 重新安装依赖:
npm install
- 删除
内容的提问来源于stack exchange,提问作者Boris K
相关产品推荐
相关产品推荐

