使用sam local invoke调用TypeScript Lambda遇bigint警告,需配置sam build?
解决AWS Lambda本地调用时bigint绑定加载警告问题
这个警告bigint: Failed to load bindings, pure JS will be used (try npm run rebuild?)的核心原因是bigint包的原生二进制绑定和SAM本地运行的容器环境不兼容,默认的sam build并没有针对Lambda的运行时环境重新编译这类原生依赖。
可行的解决办法:
用容器执行SAM Build
直接在build命令里加上--use-container参数,让SAM在模拟Lambda的Amazon Linux 2容器环境中安装依赖并编译原生模块:sam build --use-container也可以把这个配置写到
samconfig.toml里,以后不用每次加参数:[default.build.parameters] use_container = true这样生成的构建产物会包含适配Lambda环境的bigint绑定,警告就会消失。
手动针对Lambda环境重新编译bigint
如果不想用容器构建,也可以本地交叉编译:
执行下面的命令(替换18.x为你Lambda使用的Node.js版本):npm rebuild bigint --target=18.x --target_arch=x64 --target_platform=linux编译完成后再执行
sam build即可。检查依赖配置
确认package.json里的bigint是放在dependencies而非devDependencies下,SAM默认会跳过dev依赖,导致运行时只能加载纯JS版本的bigint。
补充说明
这个警告不会导致函数运行失败,但原生绑定版本的bigint性能比纯JS版本更好,所以建议按照上面的方法处理。
内容的提问来源于stack exchange,提问作者samarpan.d
相关产品推荐
相关产品推荐

