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

Когда я начинаю новый сеанс 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.

Любые решения?


person James Mulholland    schedule 03.02.2019    source источник
comment
Я также обнаружил эту проблему только на MacOS. На линуксе работает нормально. Кроме того, npm и node отлично работают для меня даже в MacOS (я не получаю ошибку JS, которую вы делаете), но как только запускается оболочка, я получаю сообщение nvm is not compatible with.... На нем также работает системная версия узла, и я могу использовать другую версию с nvm. Но любопытно, почему это происходит только с tmux   -  person Jeff Puckett    schedule 20.06.2019


Ответы (5)


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

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

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

Вам нужно перезаписать префикс nvm,

Префикс набора настроек npm $NVM_DIR/versions/node/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/

person Rohit Dhiman    schedule 26.06.2019
comment
Спасибо за ваш ответ, но ни один из них не работает. Удалось воспроизвести проблему? - person Jeff Puckett; 26.06.2019

Я думаю, что вы должны бежать

установка нпм

это должно помочь.

person UserX    schedule 20.06.2019
comment
Извините, это не работает для меня. Это появляется, как только запускается оболочка. Удалось ли вам воспроизвести ошибку с nvm? - person Jeff Puckett; 20.06.2019

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

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

person Mateusz Piotrowski    schedule 20.06.2019
comment
да оба в настоящее время sourced. такая же проблема. Вам удалось воспроизвести исходную ошибку? - person Jeff Puckett; 20.06.2019

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

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

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

person UserX    schedule 20.06.2019
comment
Я надеюсь, что это поможет! - person UserX; 20.06.2019
comment
Спасибо, но если вы прочитаете исходный опубликованный вопрос, вы должны увидеть, что это уже пробовали и здесь не работает. - person Jeff Puckett; 21.06.2019
comment
Вы можете посмотреть эту ссылку (второй ответ, тот, у которого 55 голосов): -prefix-option" title="nvm не совместим с параметром префикса конфигурации npm"> stackoverflow.com/questions/34718528/ - person UserX; 21.06.2019
comment
Тогда я понятия не имею, как решить эту проблему, извините! - person UserX; 21.06.2019

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

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

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

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

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

person Umbro    schedule 20.06.2019
comment
Не устанавливайте узел через brew. Этот вопрос относится к nvm (диспетчеру версий узлов). - person Jeff Puckett; 20.06.2019
comment
@JeffPuckett Ты проверял это? Конкретного решения нет - person Umbro; 20.06.2019
comment
Извините, ни одно из этих решений не работает для меня. Удалось воспроизвести? - person Jeff Puckett; 20.06.2019
comment
Это проблема только на «Mac»? - person Umbro; 20.06.2019
comment
Он отлично работает на Mac. Происходит только внутри tmux на Mac. - person Jeff Puckett; 20.06.2019
comment
Посмотрите на мой ответ сейчас. Я не воссоздал это. Ищу форумы. У людей похожая проблема, разные решения. В одних работах, в других нет. - person Umbro; 20.06.2019
comment
@JeffPuckett Ты пробовал? - person Umbro; 21.06.2019