AWS Lambda - Runtime.ImportModuleError: Error: Cannot find module 'jmespath'
AWS Lambda - Runtime.ImportModuleError: Error: Cannot find module 'jmespath'
我正在使用无服务器框架使用 aws lambda,我将运行时从 nodejs8.10
更改为 nodejs10.x
,然后我得到一个错误跟踪,
{"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module 'jmespath'","stack":["Runtime.ImportModuleError: Error: Cannot find module 'jmespath'"," at _loadUserApp (/var/runtime/UserFunction.js:100:13)"," at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)"," at Object.<anonymous> (/var/runtime/index.js:36:30)"," at Module._compile (internal/modules/cjs/loader.js:701:30)"," at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)"," at Module.load (internal/modules/cjs/loader.js:600:32)"," at tryModuleLoad (internal/modules/cjs/loader.js:539:12)"," at Function.Module._load (internal/modules/cjs/loader.js:531:3)"," at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)"," at startup (internal/bootstrap/node.js:283:19)"]}
此问题的原因是什么以及如何解决?
尝试在你的模块名前加上./
。我将我的名字从 require("xxx")
更改为 require("./xxx")
并且它再次起作用。在我的例子中,我想添加的本地模块文件 (xxx.js
) 与 index.js
文件处于同一级别。
我还想将其添加为调整路径之前的准备步骤,检查并验证 package.json(s) 文件中列出的依赖项。
我已经看到这个错误 "Runtime.ImportModuleError","errorMessage":"Error: Cannot find module 'something' 出现在 aws cloudwatch 日志中。
发生这种情况是因为我的项目有多个 subprojects/subfolders 和它们自己的 package.json 文件。确保模块在子项目的 package.json.
中被正确引用
在本地开发中,您可能在 base/global package.json 中引用了依赖项,并认为它有效——但是当您部署 lambda 时,构建期间发生的 npm 安装不包括新需要的模块,因为它未在本地子项目的 package.json 中引用。
我遇到了同样的问题Error: Cannot find module 'jmespath'
并解决了。
您通过 node_modules 使用 aws-sdk
吗?喜欢如下
var aws = require('aws-sdk');
如果是这样,您只需从 node_modules 中删除 aws-sdk。
删除纱线的 aws-sdk
yarn remove aws-sdk
删除 npm 的 aws-sdk
npm uninstall aws-sdk
aws-sdk
自 nodejs10 以来已包含在 lambda 中。
参见:https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
我们项目中也遇到了同样的问题。
这是与文件导入相同的问题。
我们的文件名 xabc.js
并导入为 Xabc.js
VScode 没有抱怨,表现得很好
对我来说,问题是这个 jmespath
库实际上从上传的 node_modules
文件夹中丢失了(还有一些其他的)。
通过下载 zip(因为源太大)验证了这一点,但没有找到 jmespath
和 aws-sdk
库。
通过使用 npm i
安装依赖项并使用更新的 node_modules 文件夹重新上传 lambda 解决了这个问题。
在根无服务器项目文件夹中
npm i --save <npm module name missing>
我正在使用无服务器框架使用 aws lambda,我将运行时从 nodejs8.10
更改为 nodejs10.x
,然后我得到一个错误跟踪,
{"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module 'jmespath'","stack":["Runtime.ImportModuleError: Error: Cannot find module 'jmespath'"," at _loadUserApp (/var/runtime/UserFunction.js:100:13)"," at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)"," at Object.<anonymous> (/var/runtime/index.js:36:30)"," at Module._compile (internal/modules/cjs/loader.js:701:30)"," at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)"," at Module.load (internal/modules/cjs/loader.js:600:32)"," at tryModuleLoad (internal/modules/cjs/loader.js:539:12)"," at Function.Module._load (internal/modules/cjs/loader.js:531:3)"," at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)"," at startup (internal/bootstrap/node.js:283:19)"]}
此问题的原因是什么以及如何解决?
尝试在你的模块名前加上./
。我将我的名字从 require("xxx")
更改为 require("./xxx")
并且它再次起作用。在我的例子中,我想添加的本地模块文件 (xxx.js
) 与 index.js
文件处于同一级别。
我还想将其添加为调整路径之前的准备步骤,检查并验证 package.json(s) 文件中列出的依赖项。
我已经看到这个错误 "Runtime.ImportModuleError","errorMessage":"Error: Cannot find module 'something' 出现在 aws cloudwatch 日志中。
发生这种情况是因为我的项目有多个 subprojects/subfolders 和它们自己的 package.json 文件。确保模块在子项目的 package.json.
中被正确引用
在本地开发中,您可能在 base/global package.json 中引用了依赖项,并认为它有效——但是当您部署 lambda 时,构建期间发生的 npm 安装不包括新需要的模块,因为它未在本地子项目的 package.json 中引用。
我遇到了同样的问题Error: Cannot find module 'jmespath'
并解决了。
您通过 node_modules 使用 aws-sdk
吗?喜欢如下
var aws = require('aws-sdk');
如果是这样,您只需从 node_modules 中删除 aws-sdk。
删除纱线的 aws-sdk
yarn remove aws-sdk
删除 npm 的 aws-sdk
npm uninstall aws-sdk
aws-sdk
自 nodejs10 以来已包含在 lambda 中。
参见:https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
我们项目中也遇到了同样的问题。
这是与文件导入相同的问题。
我们的文件名 xabc.js
并导入为 Xabc.js
VScode 没有抱怨,表现得很好
对我来说,问题是这个 jmespath
库实际上从上传的 node_modules
文件夹中丢失了(还有一些其他的)。
通过下载 zip(因为源太大)验证了这一点,但没有找到 jmespath
和 aws-sdk
库。
通过使用 npm i
安装依赖项并使用更新的 node_modules 文件夹重新上传 lambda 解决了这个问题。
在根无服务器项目文件夹中
npm i --save <npm module name missing>