Установка NODE_PATH из приложения NodeJS
У нас есть проект node, который не требует наших собственных подмодулей из относительного пути, но вместо этого требуется, чтобы переменная среды NODE_PATH
была установлена на lib
, чтобы найти все подмодули.
Я хотел обработать этот стандартный случай в исходном коде программы, но похоже, что это невозможно сейчас.
Я нашел несколько решений, которые не работают должным образом.
module.paths.push("./lib");
Был предложен в другой статье stackoverflow, но это вызывает сообщение об ошибке в более новых версиях node и ссылается на разработчика с помощью NODE_PATH
.
Вместо этого я попытался сделать следующее как самую первую строку моей программы.
process.env['NODE_PATH']="./lib";
Это не вызывает сообщение об ошибке, но оно не работает. Я думаю, что эта переменная читается при запуске приложения и не читается позже, когда требуются вещи.
Ответы
Ответ 1
Вся информация, которую вы можете узнать из источника: module.js
... NODE_PATH
ошибка возникает только при доступе через require.paths
.
Поиск функции _nodeModulePaths
: экземпляр модуля имеет общий объект Array paths
со всеми путями поиска в нем.
module.paths.unshift('./foo-baz');
var x = require('some-lib-name');
console.log(x);
Итак, если у вас есть необходимый модуль под ./foo-baz/some-lib-name/
, он будет правильно поднят.
Какая версия node и какая у вас система?