gpt4 book ai didi

node.js - 当mongo连接失败时如何让 Node 退出

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:04 24 4
gpt4 key购买 nike

我希望我的 Node JS 应用程序在无法连接到 Mongo 时立即退出。我正在使用 mongodb Node 库。

我已将代码减少到

const {MongoClient} = require('mongodb');
MongoClient.connect('mongodb://localhost:27017');

如果 Mongo 没有运行,我会收到带有 ECONNREFUSED 的 UnhandledPromiseRejectionWarning ,这是我完全预料到的,但程序会挂起并且永远不会退出。这是 Node 版本 10.0.0 的情况。

由于连接从未成功,因此我没有要关闭的连接句柄。我尝试了各种方法来捕获被拒绝的 promise ,但我没有成功地让程序退出。

在这种情况下我需要做什么才能关闭 MongoClient 并使程序退出?

最佳答案

您的应用程序仍保持事件状态,因为它正在尝试 reconnect 。您可以尝试禁用重新连接:

MongoClient.connect('mongodb://localhost:27017', {
autoReconnect: false
}, (err, client) => {
if (client) client.close();
});

或者,您可以使用 process.exit(1) 终止该进程。杀死该程序。

const {
MongoClient
} = require('mongodb');

// Callback syntax
MongoClient.connect('mongodb://localhost:27017', (err, db) => {
if (err) process.exit(1);
});

// Promise syntax
MongoClient
.connect('mongodb://localhost:27017')
.catch(err => {
process.exit(1);
});

// Async/await syntax
(async function() {
let db;
try {
db = await MongoClient.connect('mongodb://localhost:27017');
} catch (err) {
process.exit(1);
}
}());

关于node.js - 当mongo连接失败时如何让 Node 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50241066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com