节点需要 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');