节点需要 json 跨文件持久化
node require json persisting across files
在我的一个文件 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
为什么会发生这种情况,有什么解决办法吗?
因为require
用于模块加载,并且只加载您传递的任何内容的单个副本,并保留对它的引用。有关技术详细信息,请参阅 http://fredkschott.com/post/2014/06/require-and-the-module-system/。
如果您只想加载 json 文件,请改用 fs.readFileSync
,例如:
var locations = fs.readFileSync('./locations.json');
在我的一个文件 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
为什么会发生这种情况,有什么解决办法吗?
因为require
用于模块加载,并且只加载您传递的任何内容的单个副本,并保留对它的引用。有关技术详细信息,请参阅 http://fredkschott.com/post/2014/06/require-and-the-module-system/。
如果您只想加载 json 文件,请改用 fs.readFileSync
,例如:
var locations = fs.readFileSync('./locations.json');