【问题标题】:node require json persisting across files节点需要 json 跨文件持久化
【发布时间】: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 的深层副本。
  • 所以它只跨项目加载一次模块?

标签: json node.js require


【解决方案1】:

因为require 用于模块加载,并且只加载您传递的任何内容的单个副本,并保留对它的引用。有关技术详情,请参阅http://fredkschott.com/post/2014/06/require-and-the-module-system/

如果您确实想简单地加载 json 文件,请改用 fs.readFileSync,例如:

var locations = fs.readFileSync('./locations.json');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2011-06-11
    • 2017-11-27
    • 2016-05-27
    • 2011-07-29
    相关资源
    最近更新 更多