在节点模块中需要依赖另一个依赖项

我有一个简单的节点应用程序,在github上有另一个应用程序的单一依赖。 依赖关系在npm install安装得很好,但是当我尝试要求安装那里的东西时,它说它不可用。 例如,github应用程序将Mongoose作为依赖项安装。 我以为这个父应用程序将能够访问该模块,因为它是在一个孩子:

 var mongoose = require('mongoose') 

结构看起来像这样:

 /app /node_modules /github_dependency [parent module] /node_modules /mongoose [child module] 

我是否只需要在父应用程序中包含mongoose作为依赖项,或者是否有方法通过孩子访问该模块?

我是否只需要在父应用程序中包含mongoose作为依赖项,或者是否有方法通过孩子访问该模块?

虽然你可能 require('github/node_modules/mongoose') ,但是标准的做法是明确地安装所有的依赖关系(也就是说,你应该包括mongoose作为你应用程序的依赖)并且require('mongoose')

对于更强大的情况,在testing等情况下,可以使用以下函数:

 var Module = require('module'); var path = require('path'); function requireFrom(self, parent, name) { var pPath = Module._resolveFilename(parent, self); var m = new Module(pPath, module); m.filename = pPath; m.paths = Module._nodeModulePaths(path.dirname(pPath)); return m.require(name); } 

可以如下使用

 requireFrom(module, 'github_dependency', 'mongoose')