Подтвердить что ты не робот

Требовать зависимость другой зависимости от модулей node

У меня есть простое приложение node, которое имеет одну зависимость от другого приложения на github. Зависимость устанавливается только с помощью npm install, но когда я пытаюсь установить что-то там, оно говорит, что оно недоступно. Например, приложение github устанавливает Mongoose как зависимость. Я думал, что это родительское приложение сможет получить доступ к этому модулю, поскольку оно находится в дочернем файле:

var mongoose = require('mongoose')

Структура выглядит примерно так:

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

Нужно ли просто включать mongoose как зависимость в родительском приложении или есть способ получить доступ к этому модулю с помощью дочернего элемента?

4b9b3361

Ответ 1

Нужно ли просто включать mongoose как зависимость в родительском приложении или есть способ получить доступ к этому модулю с помощью дочернего элемента?

Пока это возможно для вас, например. require('github/node_modules/mongoose'), стандартная практика заключается в том, чтобы установить все ваши зависимости явно (т.е. вы должны включить mongoose в зависимости от вашего приложения) и require('mongoose').

Ответ 2

Для более надежного случая, который хорош в таких ситуациях, как тестирование, вы можете использовать следующую функцию:

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')