[英]Error: querySrv ENOTFOUND _mongodb._tcp.dbname.fzofb.mongodb.net
[英]Getting Error: querySrv ECONNREFUSED _mongodb._tcp.auctiondbcluster.s6rzg.mongodb.net. When trying to connect to localhost when I am offline
MongoDB connected...
Development server live on http://localhost:3000
node:internal/errors:465
ErrorCaptureStackTrace(err);
^
Error: querySrv ECONNREFUSED _mongodb._tcp.auctiondbcluster.s6rzg.mongodb.net
at QueryReqWrap.onresolve [as oncomplete] (node:dns:213:19) {
errno: undefined,
code: 'ECONNREFUSED',
syscall: 'querySrv',
hostname: '_mongodb._tcp.auctiondbcluster.s6rzg.mongodb.net'
}
當我連接到我的 wifi 時一切正常,但是當我離線並啟動服務器時,它會出現此錯誤。 順便說一句,我不是在嘗試連接到 MongoDB 在線集群,而是在嘗試連接到本地主機(mongodb://localhost:27017/auctionDB)。
這是我在app.js
中使用的函數
const runServer = async () =>{
if(process.env.NODE_ENV !== "production"){
await connectDb(process.env.MONGODB_LOCAL_CONNECTION);
app.listen(PORT, ()=>{
console.log(`Development server live on http://localhost:${PORT}`);
})
} else {
await connectDb(process.env.MONGODB_CONNECTION_STRING);
app.listen(PORT, ()=>{
console.log(`Production server live on port ${PORT}`);
})
}
}
runServer();
在我的.env
文件中, NODE_ENV
設置為開發。 這是我用來連接數據庫的connectDb.js
函數
const mongoose = require("mongoose");
/**
* @description: Connect to the database by providing the connection string.
* @param {String} uri | MongoDB URI
* @default: mongodb://localhost:27017/auctionDB
*
* @returns {undefined}
*/
const connectDb = (url = process.env.MONGODB_LOCAL_CONNECTION) => {
try {
const con = mongoose.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
});
if(con) console.log("MongoDB connected...")
} catch(e){
console.log(`Error: ${e}`);
}
};
module.exports = connectDb;
這是github上的整個項目
您應該await
mongoose.connect
調用,而不是整個函數:
const connectDb = async (url = process.env.MONGODB_LOCAL_CONNECTION) => {
try {
const con = await mongoose.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
});
if(con) console.log("MongoDB connected...")
} catch(e){
console.log(`Error: ${e}`);
}
};
module.exports = connectDb;
const runServer = () =>{
if(process.env.NODE_ENV !== "production"){
connectDb(process.env.MONGODB_LOCAL_CONNECTION);
app.listen(PORT, ()=>{
console.log(`Development server live on http://localhost:${PORT}`);
})
} else {
connectDb(process.env.MONGODB_CONNECTION_STRING);
app.listen(PORT, ()=>{
console.log(`Production server live on port ${PORT}`);
})
}
}
runServer();
確保您的 MongoDB URL 是 [ mongodb://localhost:27017/ ],而不是在線連接 MongoDB URL。 在第13行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.