nvm перепутал мое глобальное место установки модуля, как мне это исправить?

Я запускаю npm install -g pm2, но когда я запускаю pm2, я сталкиваюсь с ошибкой:

zsh: команда не найдена: pm2

Я проверил /usr/local/lib/node_modules и обнаружил, что pm2 там нет.

Я запустил npm list -g и обнаружил, что pm2 был установлен в /Users/langqiu/.nvm/versions/node/v8.14.0/lib/node_modules

Но я давно удалил nvm, запустив rm -fr /Users/langqiu/.nvm/ и удалив то, что nvm добавил в мой ~/.bash_profile.

Я снова установил nvm, затем запустил следующую команду, но npm -g по-прежнему установлен не в том месте.

Что я могу исправить?

☁  ~  nvm ls
        v8.14.0
->       system
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v8.14.0) (default)
stable -> 8.14 (-> v8.14.0) (default)
nvm_list_aliases:36: no matches found: /Users/langqiu/.nvm/alias/lts/*
☁  ~  nvm use system
Now using system version of node: v12.13.0 (npm v6.12.0)
☁  ~  npm install -g pm2
/Users/langqiu/.nvm/versions/node/v8.14.0/bin/pm2 -> /Users/langqiu/.nvm/versions/node/v8.14.0/lib/node_modules/pm2/bin/pm2
/Users/langqiu/.nvm/versions/node/v8.14.0/bin/pm2-docker -> /Users/langqiu/.nvm/versions/node/v8.14.0/lib/node_modules/pm2/bin/pm2-docker
/Users/langqiu/.nvm/versions/node/v8.14.0/bin/pm2-runtime -> /Users/langqiu/.nvm/versions/node/v8.14.0/lib/node_modules/pm2/bin/pm2-runtime
/Users/langqiu/.nvm/versions/node/v8.14.0/bin/pm2-dev -> /Users/langqiu/.nvm/versions/node/v8.14.0/lib/node_modules/pm2/bin/pm2-dev
+ [email protected]
updated 1 package in 7.938s
☁  ~  which pm2
pm2 not found

Я сделал это, но это все еще не решило проблему

☁  ~  npm config --global set prefix /usr/local
☁  ~  npm install -g pm2
/Users/langqiu/.nvm/versions/node/v8.14.0/bin/pm2-dev -> /Users/langqiu/.nvm/versions/node/v8.14.0/lib/node_modules/pm2/bin/pm2-dev
/Users/langqiu/.nvm/versions/node/v8.14.0/bin/pm2 -> /Users/langqiu/.nvm/versions/node/v8.14.0/lib/node_modules/pm2/bin/pm2
/Users/langqiu/.nvm/versions/node/v8.14.0/bin/pm2-docker -> /Users/langqiu/.nvm/versions/node/v8.14.0/lib/node_modules/pm2/bin/pm2-docker
/Users/langqiu/.nvm/versions/node/v8.14.0/bin/pm2-runtime -> /Users/langqiu/.nvm/versions/node/v8.14.0/lib/node_modules/pm2/bin/pm2-runtime
+ [email protected]
☁  ~  pm2
zsh: command not found: pm2

--- Обновить ----

Получив ответ, я наконец исправил это. Это b/c настройки ~/.npmrc

☁  ~  cat ~/.npmrc
registry=https://registry.npm.taobao.org/
prefix=/Users/langqiu/.nvm/versions/node/v8.14.0

Но почему запуск npm config --global set prefix /usr/local не исправил это?


person Qiulang    schedule 13.11.2019    source источник


Ответы (2)


Согласно документам npm, просто npm config --global set prefix /usr/local

person Klaycon    schedule 13.11.2019
comment
Кажется, у вас все еще установлен nvm? Проверьте which npm перед запуском, nvm игнорирует настроенный префикс. - person Klaycon; 14.11.2019
comment
В своем вопросе я сказал, что для исправления я переустановил nvm (пожалуйста, проверьте мой вопрос для получения подробной информации). Мой npm находится в /usr/local/bin/npm - person Qiulang; 14.11.2019
comment
Я видел, но установить глобально ничего не получится, пока установлен nvm: он полностью обходит конфиг префикса. Вам нужно будет снова полностью удалить его (удалив все скрытые команды в bashrc и профиле, а также перезапустив оболочку), прежде чем продолжить установку в соответствующий глобальный каталог. - person Klaycon; 14.11.2019
comment
ОК, я нашел причину! В моем ~/.npmrc он установил prefix=/Users/langqiu/.nvm/versions/node/v8.14.0. Поэтому, хотя я удалил nvm, проблема все равно возникает. Чувак, я ненавижу нвм. Но все равно спасибо. - person Qiulang; 14.11.2019
comment
Но почему запуск npm config --global set prefix /usr/local не исправил это? - person Qiulang; 14.11.2019
comment
Возможно из-за глобального переключателя. Запустите локально, возможно, это решило проблему. - person Klaycon; 14.11.2019
comment
Я полагаю, вы запускаете nvm, не удаляя другой node.js? - person mandaputtra; 14.11.2019

Я исправил ту же проблему, добавив новую версию node.

Вот мой рабочий процесс для справки:

Проблема:

$ nvm ls

->       system
iojs -> N/A (default)
node -> stable (-> N/A) (default)
unstable -> N/A (default)
nvm_list_aliases:36: no matches found: ~/.nvm/alias/lts/*

Добавьте последнюю версию npm

$ nvm install-latest-npm
Downloading and installing node v6.14.4...
Downloading https://nodejs.org/dist/v6.14.4/node-v6.14.4-darwin-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v6.14.4 (npm v3.10.10)
Creating default alias: default -> v6.14.4

Установите версию узла:

$ nvm use default
Now using node v6.14.4 (npm v3.10.10)

Проверьте, сейчас я использую последнюю версию узла:

$nvm current
v6.14.4

Проверьте, сработало ли решение:

$ nvm ls
->      v6.14.4
         system
default -> v6.14.4
node -> stable (-> v6.14.4) (default)
stable -> 6.14 (-> v6.14.4) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/erbium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.21.0 (-> N/A)
lts/erbium -> v12.18.1 (-> N/A)
person tgrrr    schedule 22.06.2020