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));