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

如何阻止nodemon因JSON文件变更而重启服务器?

解决nodemon因JSON文件修改重启导致数据丢失的问题

问题核心

使用fs.writeFileSync修改JSON文件时,文件变更事件会触发nodemon重启,若文件写入未完成就被nodemon检测到,会导致数据丢失。你之前尝试的忽略规则失效,多是写法错误或配置未正确生效导致。

可行解决方法

1. 修正忽略规则的正确写法

  • 忽略单个JSON文件:
    在package.json的顶层添加配置:

    "nodemonConfig": {
      "ignore": ["users.json"]
    }
    

    或终端直接执行命令:

    nodemon --ignore users.json
    

    (注意不要给文件名额外套方括号,你之前的'[users.json]'是错误写法)

  • 忽略所有层级的JSON文件:
    用递归通配符匹配所有目录下的JSON文件,在nodemon.json中配置:

    {
      "ignore": ["**/*.json"]
    }
    

2. 确保配置生效

  • package.json中的nodemonConfig必须是顶层字段,不能嵌套在scripts等其他字段内;
  • nodemon.json要放在项目根目录,与package.json同级;
  • 修改配置后,必须重启nodemon才能加载新规则。

3. 原子写入避免文件损坏

即使nodemon不重启,同步写入也可能因意外导致文件损坏,建议改用原子写入:先写临时文件,再替换目标文件,确保文件始终处于完整状态:

const fs = require('fs');
const path = require('path');

const updateJson = (filePath, data) => {
  const tempPath = `${filePath}.temp`;
  // 先写入临时文件
  fs.writeFileSync(tempPath, JSON.stringify(data, null, 2));
  // 替换原文件
  fs.renameSync(tempPath, filePath);
};

// 使用示例
updateJson('./users.json', { id: 1, name: 'test' });

4. 缩小nodemon监听范围

如果不需要监听非代码文件,直接指定nodemon只监听业务代码文件:

nodemon --watch src --ext js,ts

这样JSON文件的任何修改都不会触发重启。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:50:59