Node.js报错Runtime.ImportModuleError找不到jmespath模块如何修复
AWS Node.js程序引入jmespath报模块找不到错误修复
问题相关代码
const AWS = require('aws-sdk'); var jmespath = require('jmespath');
核心报错信息
"errorType": "Runtime.ImportModuleError",
"errorMessage": "Error: Cannot find module 'jmespath'\nRequire stack:\n- /var/task/aaa.js\n- /var/task/aaa.js\n- /var/runtime/UserFunction.js\n- /var/runtime/Runtime.js\n- /var/runtime/index.js"
报错原因
Node.js运行环境在代码部署目录下找不到jmespath模块,AWS Lambda默认运行环境没有全局预装这个第三方包,AWS SDK内部自带的jmespath属于SDK的私有依赖,业务代码无法直接引用。
修复步骤
- 进入本地项目根目录执行依赖安装命令,将jmespath写入正式依赖列表,不要加全局安装参数
npm install jmespath --save - 打包部署到Lambda时,确保压缩包根目录同时包含业务代码文件(比如示例里的aaa.js)、
package.json文件、安装生成的node_modules文件夹,不要给这些文件套额外的外层父目录,否则运行时会匹配不到依赖路径。 - 如果你使用Lambda Layer管理公共依赖,需要确保层内的jmespath存放路径符合Node.js模块查找规则:解压后路径为
nodejs/node_modules/jmespath,同时确认层已经正确关联到当前函数,且层适配的Node.js版本和函数运行时版本完全一致。 - 安装完成后本地先执行
node aaa.js验证,本地运行不再报模块找不到错误后,再重新打包部署即可。
内容的提问来源于stack exchange,提问作者Devi
相关产品推荐
相关产品推荐

