在我的一个档案A.js
中,我致电var locations = require('./locations.json')
。然后我修改位置。
然后在另一个文件中我有同样的事情var locations = require('./locations.json')
。但是,它不是具有存储在locations.json中的值的位置,而是包含我在A.js
中所做的更改。
A.js
var locations = require('./locations.json')
function func() {
// Changing the values stored locations
}
B.js
var locations = require('./locations.json')
console.log(locations) // prints out the changes made in A.js instead of what is in locations.json
为什么会发生这种情况并且有什么办法吗?
答案 0 :(得分:0)
因为require
用于模块加载,并且只加载传递它的任何内容的单个副本,并保留对它的引用。有关技术详情,请参阅http://fredkschott.com/post/2014/06/require-and-the-module-system/。
如果您只想加载json文件,请改用fs.readFileSync
,例如:
var locations = fs.readFileSync('./locations.json');