«Ошибка: не удается найти модуль« меньше »» Модуль Node.js при загрузке предпочтений / порядка / кеша?

Вот ситуация ... Итак, я создал модуль Node.js, который действует как интерфейс для некоторых механизмов шаблонов Node.js, Shift.js . Он включен в другой модуль Node.js, Design.io (это указанный блок Design.io package.json dependencies ). Design.io следит за файлами на предмет изменений.

Затем вы создаете приложение и require ('design.io') . Вы также устанавливаете, скажем, Less и Stylus в свой проект.

Таким образом, когда вы сохраните файл .less или .styl , вызывается цепочка методов:

  1. require ("design.io") получает уведомление о событии файловой системы. Затем .io вызывает
  2. require ('shift'). render (string, extension, callback) . Shift.js затем вызывает
  3. require (moduleFor (extension)) # require ("less") . Строка компилируется.

В моем приложении (текущий рабочий каталог) я установил меньше nd stylus:

npm install less stylus

У меня проблема в том, что на шаге 3 , который вызывается из модуля Shift.js, я получаю такие ошибки:

Error: Cannot find module 'less'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Less.engine (/Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift/less.js:6:14)
    at Less.render (/Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift/less.js:18:21)
    at /Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift.js:69:23
    at /Users/viatropos/Documents/git/plugins/design.io/node_modules/async/lib/async.js:118:13
    at Object.forEachSeries (/Users/viatropos/Documents/git/plugins/design.io/node_modules/async/lib/async.js:134:9)
    at Object.render (/Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift.js:78:31)

Мой вопрос: почему это происходит? Я думал, что вы можете динамически запрашивать библиотеки из модуля, если они установлены где-то … Что мне не хватает?

Целью было бы такие библиотеки, как Shift.js не нужно было бы определять каждую зависимость в package.json … Для библиотеки «интерфейса с механизмами шаблонов» это потребовало бы слишком большого количества зависимостей, которые приложение, вероятно, никогда не будет использовать.

Спасибо за помощь, надеюсь, это было несколько ясно.

9
задан Lance Pollard 17 February 2012 в 00:32
поделиться