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

Node.js中require JSON文件后无法读取更新值的技术问询

Node.js读取修改后JSON文件最新值的解决办法

问题核心是Node.js的require机制会缓存已加载的模块(包括JSON文件),所以第一次加载后,即使文件内容修改,再次require仍会取缓存里的旧值。以下是两种可行的解决办法:

方法1:清除require缓存后重新加载

直接删除require.cache中对应JSON文件的缓存条目,再重新执行require即可拿到最新内容:

// 获取config.json的绝对路径,确保精准定位缓存条目
const configPath = require.resolve('./config.json');
// 清除该文件的缓存
delete require.cache[configPath];
// 重新加载文件
const data = require('./config.json');
console.log(data.version); // 输出最新的6.3.3

方法2:使用fs模块直接读取文件

绕过require的缓存机制,用Node.js内置的fs模块直接读取文件内容并解析,每次读取都会从文件系统获取最新数据:

const fs = require('fs');

// 同步读取(适合阻塞不影响流程的场景)
function getLatestConfig() {
  const rawContent = fs.readFileSync('./config.json', 'utf8');
  return JSON.parse(rawContent);
}

// 调用函数获取最新版本
const data = getLatestConfig();
console.log(data.version); // 输出最新的6.3.3

// 异步版本(推荐在IO密集场景使用,避免阻塞事件循环)
async function getLatestConfigAsync() {
  const rawContent = await fs.promises.readFile('./config.json', 'utf8');
  return JSON.parse(rawContent);
}

// 调用异步函数
getLatestConfigAsync().then(data => {
  console.log(data.version);
});

注意事项

  • 确保文件修改操作已经完全写入磁盘后再读取,否则可能读取到不完整的内容;
  • 如果只是偶尔需要刷新配置,方法1更贴合模块加载的习惯;如果需要频繁读取最新文件状态,方法2更直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:15:55