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

AWS Lambda出现ImportModuleError:找不到'./json.js'模块问题求助

问题原因

这个Runtime.ImportModuleError报错是因为 esbuild 静态打包时没有将动态引入的./json.js文件包含到最终产物中,Lambda运行时找不到对应文件触发报错。
你修改resolver新增了调用外部服务的逻辑,引入了带有动态require相对路径文件逻辑的依赖(比如部分HTTP请求库、序列化工具或者间接依赖的graphql相关包),esbuild做静态依赖分析时无法识别运行时才能确定的路径,因此不会主动把对应的json.js打包到bundle里,才会出现修改代码后突然报错的情况。

排查步骤
  1. 先在本地构建生成的out/index.js文件中搜索require('./json.js')这段代码,定位这段代码来源于哪个第三方依赖包
  2. 本地执行node out/index.js验证是否能复现同样的报错,不用部署到Lambda就能快速验证修复效果
可行解决方案
  • 方案一:将触发动态require的依赖标记为外置
    在你的esbuild构建命令中添加--external:xxx参数(xxx为你定位到的依赖包名),告诉esbuild不要将这个包打包进最终产物,部署时将对应依赖的node_modules目录和打包后的index.js一起上传到Lambda即可。
  • 方案二:手动补全缺失文件
    如果确认缺失的./json.js是固定文件,可以在构建脚本中增加复制逻辑,构建完成后将对应文件复制到out目录下和index.js同级,部署时一起上传。
  • 方案三:调整esbuild配置兼容动态引入
    可以升级esbuild到最新稳定版,也可以尝试在构建命令中添加--preserve-symlinks --keep-names参数,优化esbuild对动态引入的处理逻辑。另外你当前定义的是NODE_ENV=dev,如果是生产部署可以切换为production,避免部分依赖在开发环境加载额外的动态调试文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:06