Nvm несовместим с опцией "префикс" конфигурации npm:
Я пытаюсь запустить еще одну версию NodeJS с nvm
, но получаю эту ошибку:
$ nvm use v4.2.4
nvm is not compatible with the npm config "prefix" option:
currently set to "/Users/z/.npm-global"
Run `npm config delete prefix` or `nvm use --delete-prefix v4.2.4` to unset it.
У меня есть префикс, чтобы избежать sudo npm
(см. https://docs.npmjs.com/getting-started/fixing-npm-permissions).
Можно ли использовать nvm
без потери моего префикса для общедоступных пакетов?
Ответы
Ответ 1
Удалить и сбросить префикс
$ npm config delete prefix
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1
Примечание. Измените номер версии на номер, указанный в сообщении об ошибке.
nvm несовместим с опцией "префикс" конфигурации npm: в настоящее время установлено "/usr/local" "Выполнить" префикс удаления конфигурации npm "или" nvm использует --delete-prefix v6.11.1 --silent "для его отмены.
Кредиты @gabfiocchi на Github - "Вам нужно перезаписать префикс nvm"
Ответ 2
У меня была та же проблема, и выполнение npm config delete prefix
мне не помогло.
Но это сделал:
После установки nvm с помощью brew создайте каталог ~/.nvm
:
$ mkdir ~/.nvm
и добавьте следующие строки в ~/.bash_profile
:
export NVM_DIR=~/.nvm
. $(brew --prefix nvm)/nvm.sh
(убедитесь, что у вас нет других связанных с nvm команд в ~/.bashrc
, ~/.profile
или ~/.bash_profile
)
Откройте новый терминал, и на этот раз на нем не должно быть никаких предупреждений.
Убедитесь, что nvm работает, выполнив команду nvm --version
.
После этого установите/переустановите NodeJS, используя nvm install node && nvm alias default node
.
Больше информации
Я установил nvm
с помощью homebrew
и после этого получил следующее уведомление:
Обратите внимание, что апстрим попросил нас сделать явное управление NVM через Homebrew не поддерживается ими, и вы должны проверить любой проблемы со стандартным методом установки nvm до создания отчетов.
Вам следует создать рабочий каталог NVM, если он не существует:
mkdir ~/.nvm
Добавьте следующее в ~/.bash_profile
или в желаемую оболочку файл конфигурации:
export NVM_DIR=~/.nvm
. $(brew --prefix nvm)/nvm.sh
Вы можете установить $NVM_DIR
в любое место, но оставив его без изменений /usr/local/Cellar/nvm/0.31.0
уничтожит все установленные Nov установки Node после обновления/переустановки.
Игнорирование этого привело меня к этому сообщению об ошибке:
nvm
несовместим с опцией "TG418]" префикс ": в настоящее время установлено значение "/usr/local/Cellar/nvm/0.31.0/versions/node/v5.7.1"
Запустите nvm use --delete-prefix v5.7.1 --silent
, чтобы сбросить его.
Я следовал более раннему руководству (из homebrew/nvm
) и после этого обнаружил, что мне нужно переустановить NodeJS. Итак, я сделал:
nvm install node && nvm alias default node
и это было исправлено.
Обновление:
Использование brew для установки NVM вызывает медленный запуск Терминала. Вы можете следовать этой инструкции, чтобы решить ее.
Ответ 3
Это может быть конфликтом с вашей локальной установкой Node (если в прошлом она была установлена другим способом, чем NVM). Вы должны удалить этот экземпляр узла:
- удалить node_modules
sudo rm -rf/usr/local/lib/node_modules
- удалить узел
sudo rm/usr/local/bin/node
- удалить ссылку на узел
cd/usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm
cd/usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm
После того, как вы не можете установить NVM
Ответ 4
Возможно, проблема в том, что ваш домашний каталог установлен где-то, потому что nvm работает неправильно с символическими ссылками. Поскольку мне все равно, где находится мой $NVM_DIR, я запускаю это, и все работает нормально:
$ mv ~/.nvm /tmp/
$ export NVM_DIR="/tmp/.nvm"
$ nvm use --delete-prefix v6.9.1
Ответ 5
Я столкнулся с этим, используя node, установленный через nvm
, с nvm
, установленным через homebrew. Я решил это, запустив brew uninstall nvm
, rm -rf $NVM_DIR
, а затем переустановив nvm с помощью официальной установки script и переустановки node версии я необходимо.
Примечание. У меня также был установлен $NVM_DIR
и символический. Я переместил его обратно в свой homedir.
Ответ 6
У меня была та же самая проблема, и это действительно раздражало каждый раз с терминалом. Я запускаю команду в терминал, и это было исправлено
Для тех, кто пытается удалить nvm из варева
может не хватить просто заварить деинсталляцию nvm
если вы видите, что префикс npm по-прежнему/usr/local, выполните эту команду
sudo rm -rf/usr/local/ndomlib/nodendom,/.npm,_modulescasts,bin,share/man отпуска /ndomnpm*,node*,man1/node*}
Ответ 7
Я следовал за fooobar.com/questions/211682/... ответом, но это не сработало.
$ npm config delete prefix
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1
После выполнения рекомендованных команд мой nvm больше не работал, при запуске nvm use
бы правильная версия используемого node -v
, а при запуске node -v
показывался другой. Не было возможности изменить версию узла.
Я удалил и переустановил NVM полностью, чтобы исправить это. Я следовал за https://github.com/creationix/nvm#manual-uninstall, запустив
$ rm -rf "$NVM_DIR"
Затем отредактировал мой .zshrc
чтобы удалить строки, связанные с nvm, которые в моем случае были
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"
Затем запустил новую оболочку (чтобы nvm не загружался в эту новую оболочку) и запустил https://github.com/creationix/nvm#install-script
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
Который добавил nvm строки, которые я ранее удалил в моем .zshrc
.
Тогда я смог использовать nvm, как раньше. Я предполагаю, что странный случай, когда что-то пошло не так и заставило меня переустановить все, не похоже, что большинство людей проходят через это из-за этой проблемы.
Ответ 8
Позвольте мне описать мою ситуацию.
Сначала проверьте текущий конфиг
$ nvm use --delete-prefix v10.7.0
$ npm config list
Затем я нашел ошибку конфигурации в выводе:
; project config /mnt/c/Users/paul/.npmrc
prefix = "/mnt/c/Users/paul/C:\\Program Files\\nodejs"
Итак, я удалил C:\\Program Files\\nodejs
в /mnt/c/Users/paul/.npmrc.
Ответ 9
Я искал решение для проблемы префикса nvm и нашел этот вопрос (прежде чем найти решение). Вот мой "диалог" оболочки. Надеюсь, это может быть полезно для кого-то. Я смог установить префикс с помощью этого сообщения:
https://github.com/npm/npm/issues/6592
Когда я попробовал npm config delete prefix
или nvm use --delete-prefix
перед использованием npm --prefix="" set prefix ""
, я получил только:
npm ERR! не в порядке 0
Обратите внимание, что вам придется повторять ту же процедуру с каждой версией node, префикс возвращается (в моем случае)/usr/local после установки.
$ nvm install 0.10
######################################################################## 100.0%
nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
Run `npm config delete prefix` or `nvm use --delete-prefix v0.10.44` to unset it.
$ npm --prefix="" set prefix ""
$ nvm use 0.10.44
nvm is not compatible with the npm config "prefix" option: currently set to "/home/john"
Run `npm config delete prefix` or `nvm use --delete-prefix v0.10.44` to unset it.
$ nvm use --delete-prefix v0.10.44
Now using node v0.10.44 (npm v1.3.10)
$ nvm ls
v0.10.44
v4.4.3
-> system
default -> 4.4.3 (-> v4.4.3)
node -> stable (-> v4.4.3) (default)
stable -> 4.4 (-> v4.4.3) (default)
iojs -> N/A (default)
$ npm config get prefix
/usr/local
Ответ 10
У меня возникла проблема после перемещения моей домашней папки на новый диск на Linux. Он был исправлен путем удаления папки .nvm и переустановки nvm
Ответ 11
Просто решил проблему. Я поместил символическую ссылку $HOME/.nvm
в $HOME/.nvm
$DEV_ZONE/env/node/nvm
. Я столкнулся с той же проблемой. Я заменил NVM_DIR
в $HOME/.zshrc
следующим образом
export NVM_DIR="$DEV_ZONE/env/node/nvm"
Кстати, пожалуйста, установите NVM с помощью команды curl
или wget
не с помощью brew
. Для получения дополнительной информации, пожалуйста, проверьте комментарий в этом выпуске на Github: 855 # issuecomment-146115434
Ответ 12
У меня просто есть идея. Используйте символьную ссылку для устранения ошибки, и вы по-прежнему можете использовать свой префикс для глобально установленных пакетов. ln -s [your prefix path] [path in the '~/.nvm']
тогда у вас будет символическая папка в папке ~/.nvm
, но на самом деле ваши глобальные пакеты все еще установлены в [ваш префиксный путь ]. Тогда ошибка не будет отображаться снова, и вы можете использовать nvm use **
обычном режиме. PS: у меня это работает на mac
. pps: не забудьте установить $PATH
в папку npm bin
для использования глобально установленных пакетов.
Ответ 13
Я решил эту проблему, когда она отображалась на терминалах VSCode и JetBrains, но не на собственном терминале, используя следующие команды:
ls -la /usr/local/bin | grep "np[mx]"
Это даст вам окончательный путь в конце:
... npm -> ../lib/node_modules/npm/bin/npm-cli.js
... npx -> ../lib/node_modules/npm/bin/npx-cli.js
После этого удаление файлов и повторный запуск кода VS должны решить проблему:
rm -R /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js
rm -R /usr/local/bin/npx /usr/local/lib/node_modules/npm/bin/npx-cli.js
исправить ссылку: https://github.com/nvm-sh/nvm/issues/1690#issuecomment-392014774
Ответ 14
Примечание:
удалить, удалить или удалить nvm - просто удалите папку $NVM_DIR
(обычно ~/.nvm
)
вы можете попробовать:
rm -rf ~/.nvm