gpt4 book ai didi

node.js - 无法从 aws-lambda 解析 "nodejs/"目录下的自定义依赖项

转载 作者:太空宇宙 更新时间:2023-11-04 01:24:10 25 4
gpt4 key购买 nike

我正在尝试从 lambda 层导入自定义依赖项,但不起作用。

环境:nodejs8.10

我有一个由以下目录结构组成的层:

mylayer.zip-
|-nodejs-
|-util.js

这里,util.js 有以下代码:

module.exports = function SomeFunction() {
console.log('Told you This Doesn't work');
}

在 myLambda.js 中,我尝试使用以下代码调用 SomeFunction:

const someFunction = require('/opt/nodejs/util')
exports.handler = async (event) => {

someFunction();
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};

但是,我收到此错误:

{
"errorMessage": "Cannot find module '/opt/nodejs/util'",
"errorType": "Error",
"stackTrace": [
"Function.Module._load (module.js:474:25)",
"Module.require (module.js:596:17)",
"require (internal/module.js:11:18)",
"Object.<anonymous> (/var/task/index.js:1:75)",
"Module._compile (module.js:652:30)",
"Object.Module._extensions..js (module.js:663:10)",
"Module.load (module.js:565:32)",
"tryModuleLoad (module.js:505:12)",
"Function.Module._load (module.js:497:3)"
]
}

提前致谢。

最佳答案

如果您想将库放入层中,并且不想在 nmp 上发布库,您可以将文件或文件夹添加到层 node_modules 文件夹

防止命名冲突

为了防止命名冲突,建议您使用 @scoped 包名称。

要创建您自己的范围,请转到 https://www.npmjs.com/org/create并创建一个组织(例如 myscope)。现在,您可以将任何您喜欢的内容放入 node_modules/@myscope 中,而不必冒命名冲突的风险...

您的图层文件夹结构可能如下所示:

mylayer.zip-
|-nodejs-
|-node_modules-
|-@myscope-
|-utils-
|-utils.js
|-somthing.js

然后您可以要求范围文件夹中的所有内容:

const someFunction = require('@myscope/utils/utils.js')
const someOtherFunction = require('@myscope/utils/something.js')

替代解决方案

实现目标的另一种方法是更改​​ lambda NODE_PATH 环境变量。

默认值(取决于您的 lambdas Node 运行时)是:

/opt/nodejs/node12/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules:/var/runtime:/var/task

保持在 aws 推荐的文件夹结构内

只需将 /opt/nodejs 添加到该列表:

/opt/nodejs:/opt/nodejs/node12/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules:/var/runtime:/var/task

有一个像这样的层:

mylayer.zip-
|-nodejs-
|-util.js

现在您可以使用 require("/opt/nodejs/utils.js") 来请求您的库

或者只是require("utils.js")

关于node.js - 无法从 aws-lambda 解析 "nodejs/"目录下的自定义依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58144905/

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