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

NodeJS读取更新JSON文件报MODULE_NOT_FOUND错误如何解决

错误原因

这个MODULE_NOT_FOUND报错是两个常见问题导致的:

  • 用require()加载相对路径文件时,路径解析基准是你执行node命令的当前工作目录,不是updateJSON.js文件的所在目录,只要运行命令的目录不对就会找不到文件
  • require()本质是Node.js的模块加载方法,会缓存已加载的模块内容,如果你后续多次修改JSON文件再重读,会拿到缓存的旧内容,本身就不适合用来做动态JSON文件的读取操作

解决方法

推荐改用fs.readFile读取JSON文件内容后手动解析,同时用path.join拼接绝对路径避免相对路径解析错误,修改后的完整代码如下:

const fs = require('fs');
const path = require('path');
// 拼接得到test.json的绝对路径,__dirname是当前updateJSON.js文件所在的目录绝对路径
// 请根据你实际的文件相对位置调整后面的相对路径参数
const fileName = path.join(__dirname, 'src/myApp/test.json');

// 读取文件内容再解析JSON
fs.readFile(fileName, 'utf8', (err, data) => {
  if (err) return console.log('读取文件失败:', err);
  
  const file = JSON.parse(data);
  file.key = "new value";
  
  // 回写文件,加JSON.stringify第三个参数格式化输出,可读性更高
  fs.writeFile(fileName, JSON.stringify(file, null, 2), (err) => {
    if (err) return console.log('写入文件失败:', err);
    console.log('修改后的内容:', JSON.stringify(file));
    console.log('已成功写入到:' + fileName);
  });
});

如果一定要用require的方式,只需要修改文件路径的定义即可解决找不到文件的问题,但仍会存在缓存问题:

// 仅替换原fileName定义即可
const fileName = require('path').join(__dirname, 'src/myApp/test.json');

验证方法

如果修改后还是报错,可以在代码最前面加一行打印确认路径是否正确:

console.log('解析后的文件路径:', fileName);

对照打印出的路径确认文件是否真实存在即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 04:33:03