跨应用程序更新后清空共享节点对象

时间:2017-03-05 21:51:42

标签: node.js

当我更新我的节点js对象时,它不会在所有需要它的类中更新。

我有像这样的availableResources.js模块

module.exports = {}

在我的resources.server.js中,我有一个像这样的初始化函数

var AvailableResources = require("./availableResources.js");

var newResource = {
    name    : 'resource1',
    type    : 'video'
}

AvailableResources[newResource.name] = newResource;
console.log("AvailableResources", AvailableResources);

并在另一个名为processor.server.js的文件中我正在使用此资源

var AvailableResources = require("./availableResources.js");

function activateResource(resourceName){
    console.log("AvailableResources", AvailableResources);
    AvailableResources[resourceName].activate();
}

当我在resources.server.js中的console.log可用资源时,我看到添加的资源具有正确的属性名称。但是当我在添加资源后在processor.server.js中控制console.log可用资源时,我仍然看到一个空对象。

当我在一个类中更新它时,如何按预期共享此对象?

1 个答案:

答案 0 :(得分:0)

因此,当您require('./availableResources.js')将该文件中的任何导出导入新位置时。您可以随意更改和操作新文件中的数据,并且不会对要导出的原始对象进行任何更改。

如果您希望resources.server.js中的操作结果受processor.server.js中函数调用的影响,则必须执行以下操作:

使用新数据更新对象后,将module.exports = AvailableResources添加到resources.server.js文件中。并将processor.server.js中的require语句更改为AvailableResources = require('./resources.server.js')

如果您在加载某些内容后尝试执行某些操作,可能应该查看Promise()而不是链式的require语句。