我正在转换我的节点微npm packages
服务,以便我可以在单个服务器中运行其中的几个。它们交换 RabbitMQ 消息,因此它们独立于侦听服务器。
我的问题是每个Ms都使用global.variables
了 ,例如 DB 连接。现在它们是包,所以我可以在一个服务器中有不同的Mss,我不能共享一个global.db_connection
,因为每个Ms可能使用不同的数据库。有没有办法让我可以global.db_connection
在 a中使用 a Package
,而 var 在该包中是全局的?
==== UPDATE1 之前,我错误地提到了模块。我的意思是npm package
。每个 MS 都是一个单独的 npm 包,我安装在服务器中。我现在已经纠正了我的问题,使用包而不是模块。
=== 示例
我知道有更好的方法在代码之间使用数据库连接。我正在使用“db_connection”作为全局对象的示例。
-- 包A.js
@module MS_A
global.db_connection = db.connect(URL_1);
class MS_A
{
...
}
module.exports = MS_A;
-- 包B.js
@module MS_B
global.db_connection = db.connect(URL_2);
class MS_B
{
...
}
module.exports = MS_B;
-- 服务器.js
global.needed_variable = 3;
var MS_A = new require("./packageA.js")().start();
var MS_B = new require("./packageB.js")().start();
/**
"needed_variable" should be visible inside both packages.
"db_connection" should be not visible outside each package
*/
MS_B 应该使用它自己的db_connection
,并且不知道db_connection
MS_A 的(反之亦然)。