问题描述:在
node.js中通过require加载了一个json文件,将它的数据保存到了变量par里了,后期修改了这个变量,在另一处代码块再次通过require获取json文件内容,获取到的是之前的那次修改后的结果原因:这是因为require加载的模块是以缓存的方式处理的,加载后返回的是一个引用,而不是原始数据的深拷贝
示例代码
javascript// 在某个文件中,如 app.js let foodsJson = require('../store/foods.json'); // 修改数据 foodsJson.push({ name: '新食物', price: 10 }); // 在其他地方引用这个数据 let anotherReference = require('../store/foods.json'); console.log(anotherReference); // 将输出包含"新食物"的数组解决方法: 使用delete require.cache[require.resolve('../store/foods.json')] 来清除缓存,然后再进行require加载
javascript// 在其他地方引用这个数据 // 清除缓存 delete require.cache[require.resolve('../store/foods.json')]; let anotherReference = require('../store/foods.json'); console.log(anotherReference); // 不会输出包含"新食物"的数组