为什么下一个身份验证给出类型错误 无法解构"连接"的属性"管理器",因为它是空的?



当我连接到mongo atlas时发生此错误,但当我使用本地数据库时,它工作正常。查看db连接图像和终端错误获取更多信息。

dbconnect.ts

import mongoose from "mongoose";
export default async function dbConnect() {
if (mongoose.connection.readyState >= 1) {
return;
}
return mongoose.connect(process.env.MONGO_URL as string, {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
useCreateIndex: true,
});
}

下面是我得到的错误
Top-level use of w, wtimeout, j, and fsync is deprecated. 
Use writeConcern instead.
(node:4052) Warning: Accessing non-existent property 'MongoError' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
Top-level use of w, wtimeout, j, and fsync is deprecated. Use writeConcern instead.
[next-auth][error][adapter_connection_error]
https://next-auth.js.org/errors#adapter_connection_error MongoError: Authentication failed.
at MessageStream.messageHandler (C:UsersSebasDocumentsProdCodefiturnode_modulesmongodblibcmapconnection.js:268:20)
at MessageStream.emit (events.js:315:20)
at processIncomingData (C:UsersSebasDocumentsProdCodefiturnode_modulesmongodblibcmapmessage_stream.js:144:12)
at MessageStream._write (C:UsersSebasDocumentsProdCodefiturnode_modulesmongodblibcmapmessage_stream.js:42:5)
at writeOrBuffer (internal/streams/writable.js:358:12)
at MessageStream.Writable.write (internal/streams/writable.js:303:10)
at TLSSocket.ondata (internal/streams/readable.js:719:22)
at TLSSocket.emit (events.js:315:20)
at addChunk (internal/streams/readable.js:309:12)
at readableAddChunk (internal/streams/readable.js:284:9)
at TLSSocket.Readable.push (internal/streams/readable.js:223:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:188:23) {
ok: 0,
code: 8000,
codeName: 'AtlasError'
}
[next-auth][error][session_error]
https://next-auth.js.org/errors#session_error TypeError: Cannot destructure property 'manager' of 'connection' as it is null.

您可以通过function dbConnect()中的console.log(process.env.MONGO_URL)检查是否未定义

这是因为我遇到了同样的错误信息

MongoError: Authentication failed

我需要dotenvapp.js但是当应用程序启动时,它将以bin/www开始。文件。所以我把下面的代码放在bin/www文件。

// Config
require('dotenv').config({
path: './config/keys.env'
})
在<<p> strong> dbConnection.js 文件,
// Connecting database
module.exports.connectDB = async () => {
try {
await mongoose
.connect(process.env.MONGODB_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
useCreateIndex: true,
})
.then(() => console.log("MongoDB connected..."));
} catch (err) {
console.error(err);
}
};

令人惊讶的是,在那之后我一切都很好。

所以你应该先检查。如果未定义,则表示env文件在bdConnect()执行之后进行处理。