【发布时间】:2015-09-02 21:32:51
【问题描述】:
在我的一个文件A.js 中,我调用了var locations = require('./locations.json')。然后我修改位置。
然后在另一个文件中我有相同的东西var locations = require('./locations.json')。但是,它现在包含我在 A.js 中所做的更改,而不是具有存储在 locations.json 中的值的位置。
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("./commonModule.js")创建两个单独的commonModule模块对象,那就不是很好了。require只加载一次模块。解决方法取决于您在做什么。最简单的可能是在func中创建locations的深层副本。 -
所以它只跨项目加载一次模块?