Lambda:找不到模块'./drivers/node-mongodb-native/connection'“,尽管添加了猫鼬层

时间:2019-08-30 11:35:53

标签: mongoose aws-lambda serverless-framework nestjs aws-lambda-layers

我有一个NestJS应用,在我的处理程序文件中,导入猫鼬创建连接:

import * as mongoose from 'mongoose';
let conn = null;
const uri = process.env.MONGO_URI;
mongoose.connection.on('connected', () => {
  // log something
});

然后,在我的处理程序函数中:

export const handler: Handler = async (event: any, context: Context) => {
  if (conn == null) {
    conn = await mongoose.connect(uri, {
      bufferCommands: false, // Disable mongoose buffering
      bufferMaxEntries: 0, // and MongoDB driver buffering
      useNewUrlParser: true,
    });
  }
  context.callbackWaitsForEmptyEventLoop = false;

现在,我已经在没有猫鼬的情况下完全部署和测试了我的应用,一切正常。

相关的无服务器配置:

plugins:
  - serverless-plugin-typescript
  - serverless-plugin-optimize
  - serverless-offline
package:
  individually: true

我在zip文件中添加了一个猫鼬层,其中有一个名为“ nodejs”的文件夹,其中有package.json和“ node_modules”文件夹,其中包含npm安装的所有依赖项。

我之前使用过的图层都可以正常工作,而没有以相同的方式安装问题。

但是,尝试任何端点时,我仍然会在控制台上看到此信息:

 "errorType": "Runtime.ImportModuleError",
    "errorMessage": "Error: Cannot find module './drivers/node-mongodb-native/connection'",
    "stack": [
        "Runtime.ImportModuleError: Error: Cannot find module './drivers/node-mongodb-native/connection'",
        "    at _loadUserApp (/var/runtime/UserFunction.js:100:13)",
        "    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
        "    at Object.<anonymous> (/var/runtime/index.js:36:30)",
        "    at Module._compile (internal/modules/cjs/loader.js:776:30)",
        "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)",
        "    at Module.load (internal/modules/cjs/loader.js:653:32)",
        "    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)",
        "    at Function.Module._load (internal/modules/cjs/loader.js:585:3)",
        "    at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)",
        "    at startup (internal/bootstrap/node.js:283:19)",
        "    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)"
    ]
}

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为我不得不最终删除“服务器无插件优化”的工作,而只是将lambda层用于依赖​​项。