2016-03-10 3 views
1

Я пытаюсь создать локальную библиотеку модулей JS для использования в проектах Node.Возможно ли потребовать модули извне каталога проекта без относительных путей?

Если новый проект находится в /Users/me/projects/path/to/new/project/, а файлы моей библиотеки находятся в /Users/me/projects/library/*.js, есть ли способ доступа к этим файлам без использования относительного пути?

В /Users/me/projects/path/to/new/project/app.js вы можете требовать foo.js так:

var foo = require('../../../../../library/foo') и что будет работать, но это неуклюжее и если файлы переместить вы должны обновить свои относительные пути.

Я пробовал requireFrom и app-module-path без везения, поскольку они относятся к корню проекта.

Любые идеи о том, как требовать файлы извне вашего проекта?

Заранее благодарен!

+0

«Можно ли требовать модули из-за пределов вашей директории проекта без относительных путей?» [Да] (https://gist.github.com/branneman/8048520). – zzzzBov

+0

Ответ Билли Мун правильный. Попробуйте добавить записи журнала внутри функции requirelib, чтобы узнать, какой путь решается. –

+0

Путь app-module может принимать абсолютные пути. Вы попробовали 'require ('app-module-path'). AddPath ('/ Users/me/projects/library')' – laggingreflex

ответ

1
var librarypath = '/Users/me/projects/library/'; 
// or if you prefer... 
// var librarypath = '../../../../../library/'; 
var foo = require(librarypath + 'foo.js'); 

... или одеты немного больше ...

function requirelib(lib){ return require('/Users/me/projects/library/'+lib+'.js'); } 
var foo = requirelib('foo'); 
var bar = requirelib('bar'); 
+0

спасибо, но это возвращает ошибку «Uncaught Error: Can not find module», а путь - правильный – dshamis317

+0

Возможно, вам тоже нужно расширение '.js' - я обновил свой ответ –

+0

попробовал в обоих направлениях и не повезло – dshamis317

Смежные вопросы