我正在使用无服务器框架使用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)"]}
此问题的原因是什么,如何解决?
答案 0 :(得分:1)
尝试将./
放在模块名称的前面。我将我的名字从require("xxx")
更改为require("./xxx")
,并且再次可以使用。就我而言,我要添加的本地模块文件(xxx.js
与index.js
文件位于同一级别。
答案 1 :(得分:1)
我遇到了同样的问题Error: Cannot find module 'jmespath'
,并解决了这个问题。
您是否通过node_modules使用aws-sdk
?像这样
var aws = require('aws-sdk');
如果是这样,您只需从node_modules中删除aws-sdk。
删除aws-sdk中的纱线
yarn remove aws-sdk
将aws-sdk删除为npm
npm uninstall aws-sdk
自nodejs10起, aws-sdk
已包含在lambda中。
参见:https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
答案 2 :(得分:0)
如果您在项目中使用webpack,请将其升级到最新版本。 我曾经在使用webpack版本2时遇到过类似的情况。 升级到Webpack 4并重新构建就可以了。 Similar Issue over here
答案 3 :(得分:0)
我还想在调整路径之前作为一个初步步骤添加此内容,检查并验证package.json(s)文件中列出的依赖项。
我已经看到此错误“ Runtime.ImportModuleError”,“ errorMessage”:“错误:在aws cloudwatch日志中找不到模块“某些东西”。
发生这种情况是因为我的项目有多个子项目/子文件夹,这些子项目/子文件夹有自己的package.json文件。确保在子项目的package.json中正确引用了模块。
在本地开发人员中,您可能在base / global package.json中引用了依赖项,并认为它可以工作-但在部署lambda时,在构建过程中发生的npm install不包括新需要的模块,因为在模块中未引用该模块。本地子项目的package.json。
答案 4 :(得分:0)
在我们的项目中也遇到了同样的问题。
是与文件导入相同的问题。
我们的文件名xabc.js
并以Xabc.js
的形式导入
VScode没有抱怨,并且显示了正确的导入
答案 5 :(得分:0)
对我来说,问题是这个 jmespath
库实际上从上传的 node_modules
文件夹中丢失了(还有其他一些库)。
通过下载 zip 验证了这一点(因为源太大)并且没有找到 jmespath
和 aws-sdk
库。
通过使用 npm i
安装依赖项并使用更新的 node_modules 文件夹重新上传 lambda 解决了该问题。