我们说模块A
和B
都需要模块C
。
AFAIK,在运行npm install A
和npm install B
时,我将获得NPM在模块A和B目录中自动安装的两个副本{ - 1}} - 至少如果这些模块依赖于 C
的版本。
我希望C
实际上为模块require("C")
和A
返回不同的模块。
如果B
只在Node.JS进程中存在一次,例如数据库连接池模块,锁定机制或类似的东西,该怎么办?这是一个已知的"问题"?如何处理这种情况?
答案 0 :(得分:1)
这是一个已知的“问题”吗?
对于一系列问题,这是一个已知的解决方案。通常,您是负责资源分配的人。例如,您打开数据库连接并将其传递(隐藏在DB对象中的某个位置)到需要数据库的所有依赖项。或者,您是启动服务器的人,该服务器在某个端口上侦听HTTP请求。
否则,如果require("C")
将返回该模块的一个副本,那将是一场噩梦。想象一下,A需要C版本0.1,而B需要C版本0.1.1。你要么得到一个错误,要么必须写require('C-0.1.*')
- 就像要求所有代码一样。一场噩梦。