Require dependency of another dependency in node modules

大兔子大兔子 提交于 2019-11-27 06:34:10

问题


I've got a simple node app that has single dependency on another app on github. The dependency installs just fine with npm install, but when I try to require something installed there, it says it's not available. For example, the github app installs Mongoose as a dependency. I thought that this parent app would be able to access that module since it is in a child:

var mongoose = require('mongoose')

The structure looks something like this:

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

Do I just have to include mongoose as a dependency as well in the parent app or is there a way of getting access to that module by way of the child?


回答1:


Do I just have to include mongoose as a dependency as well in the parent app or is there a way of getting access to that module by way of the child?

While it's possible for you to e.g. require('github/node_modules/mongoose'), the standard practice is to install all of your dependencies explicitly (i.e., you should include mongoose as a dependency of your app) and require('mongoose').




回答2:


For a more robust case, which is good in situations such as testing, you can use the following function:

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);
}

which can be used as follows

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


来源:https://stackoverflow.com/questions/9736514/require-dependency-of-another-dependency-in-node-modules

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!