Ошибка AWS Lambda «Не удается найти модуль ‘mongodb'»

#node.js #serverless-framework

#node.js #бессерверный фреймворк

Вопрос:

Я успешно развернул свою функцию в AWS.

При попытке вызвать функцию ( serverless invoke -f facebookAdInsert -l ) я получаю следующую ошибку:

 {
    "errorMessage": "Cannot find module 'mongodb'",
    "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/src/facebookAdInsert.js:222:18)",
        "__webpack_require__ (/var/task/src/facebookAdInsert.js:20:30)",
        "Object.<anonymous> (/var/task/src/facebookAdInsert.js:234:16)",
        "__webpack_require__ (/var/task/src/facebookAdInsert.js:20:30)",
        "Object.<anonymous> (/var/task/src/facebookAdInsert.js:303:16)",
        "__webpack_require__ (/var/task/src/facebookAdInsert.js:20:30)"
    ]
}
  

Вот мои зависимости:

 "dependencies": {
    "@babel/core": "^7.3.4",
    "@babel/preset-env": "^7.3.4",
    "aws-sdk": "^2.268.1",
    "babel-loader": "^8.0.5",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-env": "^1.7.0",
    "babel-preset-es2015": "^6.24.1",
    "dotenv": "^6.0.0",
    "moment": "^2.24.0",
    "mongodb": "^3.1.10",
    "mongoose": "^5.4.17",
    "parse-mongo-url": "^1.1.1",
    "request": "^2.88.0",
    "serverless-offline": "^3.33.0",
    "serverless-webpack": "^5.2.0",
    "webpack": "^4.29.6",
    "webpack-node-externals": "^1.7.2"
}
  

Есть идеи относительно того, в чем может быть проблема? На основе моих исследований были запущены возможные решения npm install перед развертыванием и переносом всех «devDependencies» в «dependencies», но они не сработали.

Комментарии:

1. вам удалось ее решить? Можете ли вы предоставить общий доступ к своему файлу serverles.yml?

Ответ №1:

Вам не хватает уровня mongodb для AWS lambda

Откройте терминал и введите

  1. mkdir nodejs
  2. cd nodejs
  3. инициализация npm -y
  4. npm устанавливает mongodb
  5. заархивируйте всю папку nodejs, убедившись, что при распаковке папки вы получите следующую структуру
     nodejs
       ---node_modules
              ---------- (mongodb and other folders)
  
  1. Загрузите этот слой в AWS Lambda
  2. Добавьте слой в свою лямбда-функцию

С этим он должен работать без проблем.

С уважением

Комментарии:

1. вам нужно загружать zip-файл каждый раз, когда вы вносите какие-либо изменения?