Пользовательские зависимости в каталоге "nodejs /" не могут быть разрешены из aws-lambda - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь импортировать пользовательские зависимости из лямбда-слоя, но не работает.

Среда: 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)"
  ]
}

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

почему бы просто не поместить свои пользовательские зависимости в папку 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')
0 голосов
/ 28 сентября 2019

Я не вижу "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;
};
...