You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理MongoParseError避免Node.js应用运行时立即退出?

解决方案
  • new MongoClient()在传入无效uri时会同步抛出错误,原代码将实例化逻辑写在try/catch外部,导致错误无法被捕获,直接触发程序崩溃。
  • 你尝试的写法中client变量是在try块内部声明的块级作用域变量,块外部无法访问,因此会出现变量不存在的报错。

正确实现代码

const { MongoClient } = require("mongodb");
const config = require("../config");

const uri = config.dbAdress;
// 先在外层声明client变量,保证全局作用域可访问
let client = null;

// 包裹同步实例化逻辑,捕获MongoParseError
try {
  client = new MongoClient(uri);
} catch (e) {
  console.error("数据库连接串配置无效:", e.message);
  // 固定等待5秒后退出,适配pkg打包的窗口场景
  setTimeout(() => process.exit(1), 5000);
}

const foo = async () => {
  // 先判断client是否初始化成功,避免空值报错
  if (!client) return;
  try {
    await client.connect();
    // 此处写后续业务逻辑
  } catch(e) {
    console.error("数据库连接失败:", e);
  } finally {
    await client.close();
  }
}

可选优化:等待用户按键再退出

如果不想固定等待5秒,可以改成用户按任意键后再关闭窗口,使用体验更灵活:

// 替换实例化错误捕获块的内容即可
catch (e) {
  console.error("数据库连接串配置无效:", e.message);
  console.log("按任意键退出程序...");
  // 监听标准输入,收到用户输入后再退出
  process.stdin.setRawMode(true);
  process.stdin.resume();
  process.stdin.on('data', () => process.exit(1));
}

注意:如果你的程序还有其他初始化逻辑,要确保只有client初始化成功后才执行后续流程,避免空值调用报错。

内容的提问来源于stack exchange,提问作者Nundex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 02:39:03