Вот ситуация ... Итак, я создал модуль Node.js, который действует как интерфейс для некоторых механизмов шаблонов Node.js, Shift.js . Он включен в другой модуль Node.js, Design.io (это указанный блок Design.io package.json dependencies
). Design.io следит за файлами на предмет изменений.
Затем вы создаете приложение и require ('design.io')
. Вы также устанавливаете, скажем, Less и Stylus в свой проект.
Таким образом, когда вы сохраните файл .less
или .styl
, вызывается цепочка методов:
require ("design.io")
получает уведомление о событии файловой системы. Затем .io вызывает require ('shift'). render (string, extension, callback)
. Shift.js затем вызывает 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
… Для библиотеки «интерфейса с механизмами шаблонов» это потребовало бы слишком большого количества зависимостей, которые приложение, вероятно, никогда не будет использовать.
Спасибо за помощь, надеюсь, это было несколько ясно.