nvm弄乱了我的全局模块安装位置,我该如何解决?

时间:2019-11-13 15:07:58

标签: node.js 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

但是很久以前,我通过运行rm -fr /Users/langqiu/.nvm/删除了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
+ pm2@4.1.2
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
+ pm2@4.1.2
☁  ~  pm2
zsh: command not found: pm2

---更新----

有了答案,我终于解决了。是〜/ .npmrc设置的b / c

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

但是为什么运行npm config --global set prefix /usr/local不能解决该问题?

2 个答案:

答案 0 :(得分:1)

npm docs,只需npm config --global set prefix /usr/local

答案 1 :(得分:0)

我通过添加新版本的节点解决了相同的问题。

这是我的工作流程供参考:

问题:

$ 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)