Node.js (节点:3966)未经处理的PromisejectionWarning:错误:querySrv EconReconRefused

Node.js (节点:3966)未经处理的PromisejectionWarning:错误:querySrv EconReconRefused,node.js,mongodb,express,mongoose,server,Node.js,Mongodb,Express,Mongoose,Server,我正在尝试修复一个错误未处理PromisejectionWarning:错误:querySrv ECONNREFUSED,当我在没有internet连接的情况下调用axios从mongoose查询获取用户数据时。我已尝试将mongoose查询User.findOne()和mongoose.connect()与try catch打包,但错误仍然存在 (节点:3966)未处理的PromisejectionWarning:错误:querySrv EConrefused\u mongodb.\u tcp

我正在尝试修复一个错误
未处理PromisejectionWarning:错误:querySrv ECONNREFUSED
,当我在没有internet连接的情况下调用axios从mongoose查询获取用户数据时。我已尝试将mongoose查询
User.findOne()
mongoose.connect()
try catch
打包,但错误仍然存在

(节点:3966)未处理的PromisejectionWarning:错误:querySrv EConrefused\u mongodb.\u tcp.cluster1-94jth.mongodb.net[0]位于 QueryReqWrap.onresolve[as-oncomplete](dns.js:196:19)[0](节点:3966) 未处理的PromisejectionWarning:未处理的承诺拒绝。这 错误源于异步函数的内部抛出 没有拦截,或拒绝未处理的承诺 with.catch()。(拒绝id:1)[0](节点:3966)[DEP0018] 弃用警告:未处理的承诺拒绝被弃用。在里面 未来,未经处理的拒绝承诺将终止合同 具有非零退出代码的Node.js进程

前端 client.js

try {                           
        const res = await axios.get('/auth/user?', {
                params: {
                    refreshToken: refreshToken,                   
                    userID: userID
                }
            }
        );                      
        console.log(res.data);
    } catch (error) {
        if(error.toJSON().message === 'Network Error'){
            alert('no internet connection');                                
        }
    }
后端 auth.routes.js

auth.get(
  '/user',
  async(req, res)=>{    
    try {
      const {userID, refreshToken, uniqueDeviceID, authTimestamp} = req.query;
      const existingUser = await User.findOne({
        $and: [
            {'user_id': userID},
            {'refresh_token': refreshToken}
        ]
      });    
      res.send(existingUser);
    } catch (error) {
      console.log(error);
    } 
  }
);
server.js

try {
    mongoose.connect(keys.mongoURI, {useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true});    
    console.log('Database Connected');
} catch (error) {
    console.log(error);    
}    

try/catch
如果没有
wait
因此,要捕获异步函数中的错误:

try {
  await someAsyncFunction();
} catch (e) {
  //...
}

或者您可以使用Promise中的
catch
方法,甚至使用回调。

包装
mongoose。使用
try/catch
连接
将不起作用,因为它没有执行
async/wait

你应该:

mongoose.connect(keys.mongoURI, {useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true})
  .then(() => console.log('Database Connected'))
  .catch(error=> console.log(error));