簡體   English   中英

出現錯誤:querySrv ECONNREFUSED _mongodb._tcp.auctiondbcluster.s6rzg.mongodb.net。 當我離線時嘗試連接到 localhost

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM