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

Node.js中JSON.stringify序列化对象存文件随机出现格式错误问题

问题原因分析
  • 并行异步写入冲突
    你使用的fs.writeFile是异步非阻塞接口,当短时间内连续创建多个User实例时,会同时触发多次save调用,多个异步写入任务会并行执行。由于操作系统层面的普通文件写入不是原子操作,多个写入流同时向同一个文件写入内容时,会出现内容穿插、互相覆盖的情况,最终生成格式错误的JSON。
  • 进程重启打断写入
    你用到了nodemon自动重启服务,如果触发重启的时间点恰好有一次fs.writeFile还未执行完成,进程会被强制终止,写到一半的不完整内容就会留存到users.json文件中,导致JSON格式异常。
  • 序列化过程中对象被修改
    JSON.stringify序列化User.USERS的过程是同步遍历对象属性,如果遍历过程中刚好有新的用户被添加到User.USERS中,也有极低概率导致序列化产出的字符串格式异常。

学习场景临时解决方案

如果不需要生产级稳定性,可以优先修改写入逻辑避免并行写入:
把异步写入改为同步写入,保证同一时间只有一个写入任务执行:

function save() {
    fs.writeFileSync('save_info/users.json', JSON.stringify(User.USERS));
}

也可以给save函数加防抖逻辑,避免短时间内重复触发写入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:24:08