gpt4 book ai didi

node.js - AWS lambda 函数错误 - 无法导入模块 'index' : Error

转载 作者:太空宇宙 更新时间:2023-11-03 22:59:17 25 4
gpt4 key购买 nike

我正在尝试在nodejs 中创建一个lambda。根据文档,我创建了一个包含 lambda 函数、node_modules 和 package.json 的 zip 文件。我的 lambda zip 文件的结构如下:

my-lambda-function/
|
|---util/
| |
| |--util-1.js
| |--util-2.js
|---api/
| |
| |--api-call-1.js
| |--api-call-2.js
|
|---config
| |
| |--env/
| | |--env-file-1.js
| |
| |--config-file-1.js
| |--config-file-2.js
|
|---node_modules/
| |
| |--module-1/
| |--module-2/
|---index.js
|---package.json

为了创建这个 zip 文件,我使用了 gulp 任务,

gulp.task('zip', ['test'], () => {
const buildArtifact = ['index.js', 'package.json', 'util/**',
'config/**', 'api/**'];
Object.keys(pjson.dependencies).forEach((dep) => {
buildArtifact.push(`node_modules/${dep}/**/*`);
});
const zipFile = `${pjson.name}.zip`;
return gulp.src(buildArtifact, { base: '.' })
.pipe(zip(zipFile))
.pipe(gulp.dest('build'));
});

此 lambda 使用 lambda-local 在本地运行。但是在测试这个 lambda 时会抛出错误

Unable to import module 'index': Error
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/var/task/node_modules/ioredis/built/utils/lodash.js:2:19)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)

当前错误指向 ioredis 模块(可在 node_modues 文件夹中找到),但如果我从代码中删除 ioredis 的使用(通过删除 ioredis 的导入),则错误将更改为另一个 Node 模块。

我的 lambda 函数似乎无法加载/查找 node_modules。是否是由于 lambda 无法安装 npm?

任何解决此问题的指示都会有所帮助,因为我们已经为此苦苦挣扎了几天

谢谢

更多详细信息

  1. 我们可以通过删除 node_modules 文件夹然后在本地运行 lambda 来重现错误
  2. 如果我删除所有依赖项,一个简单的日志记录语句就可以工作。
  3. Lambda 在 AWS 中使用 Node 8.10

回答(@Kannaiyan)

将 zip 任务更改为:

gulp.task('npm-install', () => gulp.src('./package.json')
.pipe(gulp.dest('build/'))
.pipe(install({ production: true })));

为我工作。

最佳答案

Unable to import module 'index': Error

看起来您的某些依赖项已安装/未正确打包。删除 node_modules 目录并使用 npm install 重新安装模块应该可以解决问题。

确保您的函数按照文档 https://docs.aws.amazon.com/lambda/latest/dg/nodejs-create-deployment-pkg.html 中所述进行打包。

如果您的包错过了node_module,那么将会导致此错误。

编辑1:

您遇到了 gulp 打包问题。

以下示例包含使用 gulp 打包 lambda 的完整文档。

https://medium.com/@AdamRNeary/a-gulp-workflow-for-amazon-lambda-61c2afd723b6

希望有帮助。

关于node.js - AWS lambda 函数错误 - 无法导入模块 'index' : Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52302070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com