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

使用esbuild打包NodeJS项目后运行报错:AWS CRT binary not present

解决AWS CRT二进制文件路径错误问题

以下是针对你遇到的打包后运行报错的排查和解决步骤:

1. 扩大external依赖范围

仅将@aws-sdk/crt-loader设为外部依赖不足以解决问题,因为@aws-sdk/signature-v4-crt依赖的是整个AWS CRT生态的包(包括底层的aws-crt,二进制文件实际存放在这里)。需要将所有相关AWS SDK CRT包设为外部依赖,让Node运行时从node_modules加载:

esbuild src/server.ts --outdir=dist --bundle --platform=node --external:@aws-sdk/* --external:aws-crt

2. 保留Node.js原生路径变量

esbuild打包Node项目时会默认修改__dirname和__filename,导致crt-loader计算二进制文件路径出错。添加参数保留原生路径变量:

esbuild src/server.ts --outdir=dist --bundle --platform=node --external:@aws-sdk/* --external:aws-crt --define:__dirname='__dirname' --define:__filename='__filename'

3. 手动指定CRT二进制路径

如果上述方法无效,可通过环境变量强制指定二进制文件位置:

  • 运行时指定(需根据你的系统架构调整路径):
AWS_CRT_BINARY_PATH=./node_modules/aws-crt/bin/linux-x64-glibc/aws-crt-nodejs.node node dist/server.js
  • 代码中提前设置:
process.env.AWS_CRT_BINARY_PATH = require.resolve('aws-crt/bin/linux-x64-glibc/aws-crt-nodejs.node');

4. 验证aws-crt包安装完整性

检查node_modules中是否存在对应架构的二进制文件:

ls -la node_modules/aws-crt/bin/

如果缺失,重新安装依赖:

rm -rf node_modules package-lock.json
npm install

5. 调整tsconfig模块解析策略

将tsconfig.json中的moduleResolution改为node,贴近Node.js原生模块解析逻辑:

"moduleResolution": "node"

修改后重新打包测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:02:10