我正在尝试从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)"
]
}
谢谢。
答案 0 :(得分:0)
在您列出的目录结构中看不到“ opt”;也许您只需要'/ nodejs / util'作为路径?
此外,我认为您需要在模块中引用该函数:
const util = require('./nodejs/util')
exports.handler = async (event) => {
await util.someFunction();
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
答案 1 :(得分:0)
为什么不将您的自定义依赖项放在node_modules文件夹中?
mylayer.zip-
|-nodejs-
|-node_modules-
|-utils-
|-utils.js
|-somthing.js
然后您可以在utils文件夹中要求所有内容:
const someFunction = require('utils/utils.js')
const someOtherFunction = require('utils/something.js')