NPM:导致不需要的重复模块实例的依赖项

时间:2014-09-17 15:30:50

标签: node.js dependency-injection npm

我们说模块AB都需要模块C

AFAIK,在运行npm install Anpm install B时,我将获得NPM在模块A和B目录中自动安装的两个副本{ - 1}} - 至少如果这些模块依赖于 C版本。

我希望C实际上为模块require("C")A返回不同的模块。

如果B只在Node.JS进程中存在一次,例如数据库连接池模块,锁定机制或类似的东西,该怎么办?这是一个已知的"问题"?如何处理这种情况?

1 个答案:

答案 0 :(得分:1)

  

这是一个已知的“问题”吗?

对于一系列问题,这是一个已知的解决方案。通常,您是负责资源分配的人。例如,您打开数据库连接并将其传递(隐藏在DB对象中的某个位置)到需要数据库的所有依赖项。或者,您是启动服务器的人,该服务器在某个端口上侦听HTTP请求。

否则,如果require("C")将返回该模块的一个副本,那将是一场噩梦。想象一下,A需要C版本0.1,而B需要C版本0.1.1。你要么得到一个错误,要么必须写require('C-0.1.*') - 就像要求所有代码一样。一场噩梦。