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

使用Node.js执行MongoDB备份失败,退出码为1

解决Node.js调用mongodump退出码1的问题

核心问题定位

当前脚本仅监听了进程退出事件,但未捕获mongodump的错误输出,导致无法得知退出码1的具体原因——这是排查这类问题的关键缺失环节。

修复步骤

1. 完善脚本,捕获错误输出

修改脚本,添加对stderr的监听,获取mongodump的具体报错信息,才能精准定位问题:

const spawn = require('child_process').spawn;

let backupProcess = spawn('mongodump', [
    '--host=localhost',
    '--port=27017',
    '--out=./backup', // 建议指定独立备份目录,规避当前目录权限风险
    '--db=testdb',
], {shell: true});

// 捕获mongodump的错误输出
backupProcess.stderr.on('data', (data) => {
    console.error('mongodump错误详情:', data.toString());
});

backupProcess.on('exit', (code, signal) => {
    console.log('备份进程已结束');
    if(code) 
        console.log('备份进程退出码:', code);
    else if (signal)
        console.error('备份进程被信号终止:', signal);
    else 
        console.log('数据库备份成功完成')
});

2. 根据错误信息针对性修复

常见导致退出码1的原因及解决方法:

  • mongodump未安装或不在系统PATH中:
    • 终端直接运行mongodump验证是否可用,若不可用需先安装MongoDB工具包;
    • Windows需将MongoDB的bin目录添加到系统环境变量PATH;Linux/macOS可通过which mongodump获取绝对路径,在脚本中替换为该路径(如/usr/local/bin/mongodump)。
  • 数据库权限不足:
    • 若MongoDB开启了认证,需添加--username、--password参数,必要时加上--authenticationDatabase指定认证库(默认是admin)。
  • 备份目录无写入权限:
    • 确保--out指定的目录存在且当前用户有写入权限,建议提前创建backup目录并设置好权限。
  • 目标数据库不存在:
    • 用mongosh连接本地MongoDB,执行show dbs确认testdb数据库是否存在,若不存在需先创建或修改脚本中的数据库名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:40:33