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

nodemon文件变更/rs触发重启时报spawn EBADF崩溃

故障根因

你当前使用的nodemon 1.19.4是2019年发布的旧版本,和Node.js 18.x 存在底层API兼容问题:
旧版nodemon依赖的pstree.remy包在重启时需要查杀原有服务进程,会调用Node.js的spawn子进程接口,但Node 18调整了子进程文件描述符的校验逻辑,老版本代码没有做适配,直接触发EBADF(无效文件描述符)错误。不管是文件变更触发自动重启,还是手动输入rs触发重启,都会走到这段杀进程的逻辑,所以崩溃可以稳定复现。
日志里打印的MongoDB相关弃用警告和本次崩溃没有关系,不影响nodemon的运行逻辑。

解决方案

按优先级选以下任意一种处理即可:

  • 优先升级nodemon到最新稳定版本,执行对应包管理工具的安装命令:
# npm 执行
npm install nodemon@latest --save-dev

# yarn 执行
yarn add nodemon@latest --dev

新版nodemon已经完成高版本Node.js的适配,升级完成后不需要调整原有目录监听配置,自动重启、rs手动重启功能都会恢复正常。

  • 如果项目有特殊依赖锁死了nodemon版本无法升级,可以将本地运行环境的Node.js版本降级到16.x及以下,旧版Node的子进程逻辑和nodemon 1.19.4匹配,不会触发该报错,但Node 16已结束官方维护,不建议长期使用该方案。

额外说明:如果后续需要清理日志里的MongoDB警告,只需要在MongoClient连接配置里加上useNewUrlParser: true、useUnifiedTopology: true两个参数,同时将代码里调用的collection.ensureIndex方法替换为collection.createIndexes即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 23:48:36