Ошибка NPM / NVM при запуске tmux: nvm несовместим с параметром префикса конфигурации npm: в настоящее время установлено значение "" - PullRequest
0 голосов
/ 03 февраля 2019

Когда я начинаю новый сеанс tmux с tmux, tmux new или tmux new-session, я получаю следующую ошибку:

module.js:549
    throw err;
    ^

Error: Cannot find module '../lib/utils/unsupported.js'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:153:3)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
nvm is not compatible with the npm config "prefix" option: currently set to ""
Run `npm config delete prefix` or `nvm use --delete-prefix v10.8.0 --silent` to unset it.

Я пробовал решение для этого вопроса т.е. npm delete prefix но безрезультатно: запуск вне сеанса tmux не устраняет проблему, а запуск в сеансе tmux снова выдает верхнюю часть предыдущей ошибки (без предупреждения npm):

module.js:549
    throw err;
    ^

Error: Cannot find module '../lib/utils/unsupported.js'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:153:3)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)

Похоже, это проблема с npm, так как ошибка .js также возникает, когда я запускаю npm --help.Однако это происходит только в tmux.

Какие-нибудь решения?

Ответы [ 5 ]

0 голосов
/ 26 июня 2019

После поиска в интернете я нашел несколько принятых ответов:

Попробуйте снова настроить ссылку $ NVM_DIR.

Например, nvm использует v7.10.0 и выдает ошибку: Run npm config delete prefix или nvm use --delete-prefix v7.10.0 --silent, чтобы сбросить его.

Вам необходимо переписать префикс nvm,

префикс конфигурации npm $ NVM_DIR / версии / узел / v7.10.0

https://github.com/nvm-sh/nvm/issues/855#issuecomment-314309706

ИЛИ

Если вы используете любую другую оболочку, кроме bash, обязательно настройте ваш tmux следующим образом:

# set default shell to zsh
set -g default-command /bin/zsh
set -g default-shell /bin/zsh

Это решеноэто для меня.

https://github.com/nvm-sh/nvm/issues/1245#issuecomment-370396741

ИЛИ

закомментируйте код ниже в вашем файле оболочки (например, ~ / .zshrc):

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

выйдите из своей учетной записи и войдите в систему

отмените приведенный выше код и исходный файл оболочки

ИЛИ

nvm unalias default

https://stackoverflow.com/a/47861348/6700273 https://blog.natetodd.com/nvm/

0 голосов
/ 20 июня 2019

Вот еще одно возможное решение:

$ npm config delete prefix 
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1

Это должно удалить и сбросить префикс, который вы можете редактировать позже.

0 голосов
/ 20 июня 2019

Исправлено: похоже, это может зависеть от того, как macOS обрабатывает патчи в каждой оболочке bash.Добавление рекомендованной логики очистки пути к файлам моего профиля устранило эту проблему для меня.

То же самое, только на tmux, с установленным nvm через скрипт curl.

Как ни странно,кажется, что я использую разные версии npm, когда в tmux и когда я просто в моей оболочке (zsh).Когда я в tmux, выполнение npm приводит к /usr/local/bin/npm, а в zsh - /Users/brett/.nvm/versions/node/v10.8.0/bin/npm.

Похоже, это может быть связано с перезагрузкой tmux файлов моего профиля и добавлением дополнительных путей к$ PATH.

Смотрите здесь: При использовании tmux nvm не получает

0 голосов
/ 20 июня 2019

Bash запускается как оболочка входа в tmux.В macOS источником является ~ / .bash_profile, а не ~ / .bashrc, AFAIK.

Вы пытались добавить source ~/.bashrc в ваш ~ / .bash_profile?

0 голосов
/ 20 июня 2019

Я думаю, что вы должны запустить

npm install

это должно сработать.

...