Установка 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 и какая у вас система?