Lambda:找不到模块'./drivers/node-mongodb-native/connection'”,尽管添加了猫鼬层
Lambda: cannot find module './drivers/node-mongodb-native/connection'", although mongoose layer added
我有一个 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
我添加了一个 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)"
]
}
这是由于 'serverless-plugin-optimize' 的工作造成的,我不得不在最后删除它并简单地为我的依赖项使用 lambda 层。
我有一个 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
我添加了一个 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)"
]
}
这是由于 'serverless-plugin-optimize' 的工作造成的,我不得不在最后删除它并简单地为我的依赖项使用 lambda 层。