Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何跨';中的多个节点模块访问对象数组作为数据存储;使用严格的';模式_Javascript_Arrays_Node.js_Module_Scope - Fatal编程技术网

Javascript 如何跨';中的多个节点模块访问对象数组作为数据存储;使用严格的';模式

Javascript 如何跨';中的多个节点模块访问对象数组作为数据存储;使用严格的';模式,javascript,arrays,node.js,module,scope,Javascript,Arrays,Node.js,Module,Scope,因此,我使用对象数组作为数据存储。每个模块都处于“使用严格”模式,因此全局模块不工作。我尝试创建一个单独的模块来存储数据,并将其包含在多个模块中,但都失败了 list.js 'use strict'; module.exports.list = []; var list = require('./list.js').list; list = [{id:1},{id:2},{id:3}]; 我将让其他文件访问此文件,例如,主代码,然后是测试文件。我需要能够从包含的每个文件列表中访问和

因此,我使用对象数组作为数据存储。每个模块都处于“使用严格”模式,因此全局模块不工作。我尝试创建一个单独的模块来存储数据,并将其包含在多个模块中,但都失败了

list.js

'use strict';

module.exports.list = [];
var list = require('./list.js').list;
    list = [{id:1},{id:2},{id:3}];
我将让其他文件访问此文件,例如,主代码,然后是测试文件。我需要能够从包含的每个文件列表中访问和操作数组。我得到的只是模块崩溃

code.js

'use strict';

module.exports.list = [];
var list = require('./list.js').list;
    list = [{id:1},{id:2},{id:3}];
试图运行规范,只会使一切崩溃,删除数据存储会使测试失败

code\u spec.js
——测试


实际上,您并没有更新列表的单例实例。您希望为此使用setter和getter。您可以使用
闭包的概念来访问list.js中的局部变量

//list.js

var list = [];

module.exports.get = function () {
    return list;
}

module.exports.set = function (ll) {
    if (Array.isArray(ll)) {
        list = ll
    }
}
以及如何在其他文件中使用它:

//other.js

var listService = require('./list');

list = listService.get();

newList = listService.set([{id:1}, {id:2}, {id:3}]);

console.log(listService.get()); //[{id:1}, {id:2}, {id:3}]
另一个我只会用于某些事情的可能性是使用
global
对象:

global.list = [{id:1}, {id:2}, {id:3}];

这可以在整个应用程序中使用。但是不要污染你的全局空间。

我不明白为什么这两行代码会使引擎崩溃。无论如何,
list=[{id:1},{id:2},{id:3}]
只会更改局部变量
列表
,不会影响其他模块的
列表