AWS Lambda错误“找不到模块'mongodb'”

时间:2019-03-13 21:15:25

标签: node.js serverless-framework

我已成功将功能部署到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"
}

有关此问题可能有什么想法?根据我的研究,可能的解决方案在部署所有{devDependencies“并将其移至” dependencies“之前正在运行npm install,但这些解决方案均无效。

1 个答案:

答案 0 :(得分:0)

您缺少AWS Lambda的mongodb层

打开终端并输入

  1. mkdir nodejs
  2. cd nodejs
  3. npm init -y
  4. npm安装mongodb
  5. 压缩整个nodejs文件夹,确保如果解压缩该文件夹,则会得到以下结构
    nodejs
      +---node_modules
             +---------- (mongodb and other folders)
  1. 将此层上传到AWS Lambda
  2. 将图层添加到Lambda函数中

有了它,它应该可以正常工作。

致谢