Путь к глобальным модулям node.js недоступен в скриптах узла

Я развертываю сайт WordPress, на котором есть множество настраиваемых плагинов mu и настраиваемая тема, и все они имеют процессы сборки gulp и все используют одни и те же пакеты npm. Из-за этого я хочу установить все пакеты npm глобально, чтобы я мог запускать сценарий узла корневого уровня, который, в свою очередь, запускает каждый из файлов gulp (темы и плагины) и создает все необходимое. Просто использую узел child_process.execSync() для запуска файлов sub gulp.

К сожалению, похоже, что мои сценарии не могут найти глобально устанавливаемые пакеты npm. мой .bashrc скрипт определяет следующее:

PATH="/usr/local/bin/npm-global/bin:$HOME/bin:$HOME/.local/bin:$PATH"
NODE_PATH="/usr/local/bin/npm-global/lib/node_modules:$NODE_PATH"
NPM_CONFIG_PREFIX=/usr/local/bin/npm-global/

и если я запускаю префикс npg -g и npm -g root, я получаю следующее:

$ npm -g prefix
/usr/local/bin/npm-global

$ npm -g root
/usr/local/bin/npm-global/lib/node_modules

однако, если я запускаю свой скрипт узла, я получаю такие ошибки, как Error: Cannot find module 'glob'

Я МОГУ заставить свои скрипты работать, если добавлю что-то вроде

module.paths.push('/usr/local/bin/npm-global/lib/node_modules') в мой основной скрипт, но мне также придется добавить это в каждый файл gulp. Я также должен отметить, что если я запускаю что-то вроде child_process.execSync('npm -g root'), он выводит /usr/local/bin/npm-global/lib/node_modules

Итак, как я могу заставить все мои сценарии использовать по умолчанию только глобально установленные пакеты?


person rugbert    schedule 13.12.2020    source источник
comment
Вы пробовали добавить export в определения PATH / NODE_PATH в .bashrc, т.е. export PATH="/usr/local/bin/npm-global/bin:$HOME/bin:$HOME/.local/bin:$PATH"?   -  person DylanSp    schedule 15.12.2020


Ответы (1)