解压重打包后AWS Lambda出现Runtime.ImportModuleError求助
Lambda Runtime.ImportModuleError 解决思路
针对你遇到的「旧包直接上传正常,Mac终端解压重打包后触发Runtime.ImportModuleError」的问题,核心是打包过程导致的文件结构、权限或环境差异,以下是具体解决方向:
修正打包路径
旧包的正确结构应该是根目录直接包含api.js、node_modules等核心文件,而你执行zip -r deploy.zip deploy会将deploy文件夹作为压缩包的根目录,Lambda无法找到预期路径下的入口文件。
正确操作:进入解压后的deploy目录,执行命令:zip -r ../deploy.zip .排除Mac系统隐藏文件
Mac解压zip时会生成__MACOSX隐藏目录和.DS_Store文件,这些冗余文件会被打包进压缩包,干扰Lambda的模块加载逻辑。
打包时添加排除规则:zip -r deploy.zip . -x "*.DS_Store" -x "__MACOSX/*"统一文件权限
Mac下解压后的文件权限可能与原包不一致,Lambda运行时需要文件具备可读权限(脚本文件还需执行权限)。
打包前进入项目目录执行:chmod -R 644 . chmod +x api.js确保依赖架构兼容
若你的Mac是ARM架构(M系列芯片),本地安装的依赖可能和Lambda使用的x86_64架构不兼容(若重打包时重新安装了依赖则会触发此问题)。
解决方式:使用npm指定架构安装依赖:npm install --platform linux-x64 --arch x64检查导入路径大小写
Mac文件系统大小写不敏感,但Lambda运行的Linux系统大小写敏感。若代码中导入路径的大小写与实际文件名不一致,本地可正常运行,但Lambda会报错。
例如代码中写import xxx from './Api.js',实际文件是api.js,需统一导入路径与文件名的大小写。
内容的提问来源于stack exchange,提问作者gfek
相关产品推荐
相关产品推荐

