Javascript 如何在NodeJS中同时更改对象(在同一个库中但在不同的路径中)

Javascript 如何在NodeJS中同时更改对象(在同一个库中但在不同的路径中),javascript,node.js,Javascript,Node.js,我的项目文件夹如下所示: --main.js --解放党 ------利巴 ----------a、 js ------libB ----------b、 js ----------解放党 --------------利巴 ------------------a、 js 在main.js中: 在b.js中: 在a.js中: 然后,如果我在b.js中更改了obja,那么main.js中的obja没有更改 我的问题是如何同时更改两个obja 谢谢。在您的示例中,如果您去掉obja变量,只引用li

我的项目文件夹如下所示:

  • --main.js
  • --解放党
  • ------利巴
  • ----------a、 js
  • ------libB
  • ----------b、 js
  • ----------解放党
  • --------------利巴
  • ------------------a、 js
在main.js中:

在b.js中:

在a.js中:

然后,如果我在b.js中更改了obja,那么main.js中的obja没有更改

我的问题是如何同时更改两个obja


谢谢。

在您的示例中,如果您去掉obja变量,只引用libA.a,您可以在这两个位置进行更改-假设您处于相同的进程/集群中

您有两个不同的
a.js
文件-一个在
lib/libA
中,另一个在
lib/libB/libA
中。这是两个不同的模块,每个模块都有自己的
exports
对象。如果要引用相同的
a
模块,需要将
b.js
文件更改为:

var obja = require('../libA/a');

这样,
main.js
b.js
都将引用相同的模块(lib/libA/a.js中的模块)。

如果像util.js这样的a.js使用obja=require('a');,然后问题就解决了。但是如何更改module.path globle。当我开发libB时,没有libA。如果我可以将libA放在globle modules.path中,那么我可以改为var obja=require('a')。就像require('util')。但是如何设置modules.path globle呢?您可以将
a.js
放在应用程序根目录的
node\u modules
文件夹中:这样您就可以简单地按照
require('a')
导入它。这是一个解决方案。但我很困惑:在NodeJS库中更改对象是否是错误的。我们从不改变普通NodeJS库中的对象,比如jasmine node、jshint、uglify js……我相信这是可以的,只要你们知道你们在做什么。谢谢。你的回答很有帮助。但我必须出口libA.a。还有更优雅的方式吗?@coordinate这是最优雅的方式如果libB不是我开发的lib,我不能将其更改为引用libA.a。所以我很困惑:在NodeJS库中更改对象是否是错误的。我们从不改变普通NodeJS库中的对象,比如jasmine节点、jshint、uglify js。。。。。。
var obja = require('./lib/libA/a');
module.exports = {};
var obja = require('../libA/a');