Mongoose Lambda:找不到模块'/驱动程序/节点mongodb本机/连接'&引用;,虽然增加了猫鼬层

Mongoose Lambda:找不到模块'/驱动程序/节点mongodb本机/连接'&引用;,虽然增加了猫鼬层,mongoose,aws-lambda,serverless-framework,nestjs,aws-lambda-layers,Mongoose,Aws Lambda,Serverless Framework,Nestjs,Aws Lambda Layers,我有一个NestJS应用程序,在我的处理程序文件中导入mongoose以创建连接: import * as mongoose from 'mongoose'; let conn = null; const uri = process.env.MONGO_URI; mongoose.connection.on('connected', () => { // log something }); 然后,在我的处理函数中: export const handler: Handler = a

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

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
我还添加了一个mongoose层,在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)"
    ]
}

“errorType”:“Runtime.ImportModuleError”,
“errorMessage:“错误:找不到模块”。/drivers/node mongodb native/connection',
“堆栈”:[
“Runtime.ImportModuleError:错误:找不到模块”“/drivers/node mongodb native/connection”“,
“在_loadUserApp(/var/runtime/UserFunction.js:100:13)”中,
“在Object.module.exports.load(/var/runtime/UserFunction.js:140:17)”中,
“at对象。(/var/runtime/index.js:36:30)”,
“at模块编译(内部/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)”,
“在tryModuleLoad(internal/modules/cjs/loader.js:593:12)”中,
“at Function.Module._load(内部/modules/cjs/loader.js:585:3)”,
“在Function.Module.runMain(internal/modules/cjs/loader.js:829:12)”中,
“启动时(内部/bootstrap/node.js:283:19)”,
“在bootstrapNodeJSCore(internal/bootstrap/node.js:622:3)”
]
}

这是由于“无服务器插件优化”的工作造成的,我最终不得不删除它,并简单地使用lambda层作为我的依赖项。

您使用的是什么版本的Mongoose?@TimRooke
^5.6.9
但我认为我发现了问题——它似乎是由
无服务器插件优化
及其方式引起的转换整个项目,而不是mongoose本身。如果我使用
无服务器插件monorepo
捆绑我的应用程序,一切正常,但是我的功能是40+mb,而使用optimize时是2mb。看起来是这样。。。该线程似乎建议
5.2.5
如果这是一个选项的话?@TimRooke尝试过,但不起作用,我现在已经完全排除了mongoose,并将其添加为一个包含所有依赖项的层。但是现在我得到了与此线程相关的其他错误。