AWS Lambda-Runtime.ImportModuleError:错误:找不到模块“ jmespath”

时间:2019-07-18 06:33:54

标签: node.js amazon-web-services aws-lambda serverless-framework

我正在使用无服务器框架使用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)"]}

此问题的原因是什么,如何解决?

6 个答案:

答案 0 :(得分:1)

尝试将./放在模块名称的前面。我将我的名字从require("xxx")更改为require("./xxx"),并且再次可以使用。就我而言,我要添加的本地模块文件(xxx.jsindex.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 验证了这一点(因为源太大)并且没有找到 jmespathaws-sdk 库。
通过使用 npm i 安装依赖项并使用更新的 node_modules 文件夹重新上传 lambda 解决了该问题。