通过nvm升级了节点和npm,但旧节点仍用于全局软件包

Pau*_*erg 8 node.js npm node-modules nvm

我使用节点9.3.0已有很长时间了,但是最近我迁移到了10.12.0。一切正常,当我这样做时node -vnpm -v我得到了正确的版本:

Paul-Bergs-Macbook:node paulrberg$ node -v
v10.12.0
Paul-Bergs-Macbook:node paulrberg$ which node
/Users/paulrberg/.nvm/versions/node/v10.12.0/bin/node
Paul-Bergs-Macbook:node paulrberg$ npm -v
6.4.1
Paul-Bergs-Macbook:node paulrberg$ which npm
/Users/paulrberg/.nvm/versions/node/v10.12.0/bin/npm
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行任何npm命令时,将使用旧版本。那是:

Paul-Bergs-Macbook:node paulrberg$ npm i truffle -g
/Users/paulrberg/.nvm/versions/node/v9.3.0/bin/truffle -> /Users/paulrberg/.nvm/versions/node/v9.3.0/lib/node_modules/truffle/build/cli.bundled.js
+ truffle@4.1.14
added 81 packages from 311 contributors in 1.715s
Run Code Online (Sandbox Code Playgroud)

和:

npm list -g --depth=0
/Users/paulrberg/.nvm/versions/node/v9.3.0/lib
??? truffle@4.1.14
Run Code Online (Sandbox Code Playgroud)

不知道这是否是仍指向最新版本的bash代码,但我似乎找不到任何证明。运行env并检查9.3.0环境变量不会产生任何结果。

到目前为止,我做了什么:

  • 使用以下命令删除节点9.3.0 nvm uninstall 9.3.0
  • 删除nvm并重新启动计算机后,重新安装nvm
  • nvm reinstall-with-packages
  • 删除~/.nvmrc并设置10.12.0在那里
  • 检查我是否有来自自制软件的重叠节点,但我没有问题可能是什么?

Pau*_*erg 9

在经过数小时的Unix痛苦的调试之后,我意识到问题是我在中设置了前缀npm config

prefix = "/Users/paulrberg/.nvm/versions/node/v9.3.0"
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请确保通过执行以下操作取消设置前缀:

npm config rm prefix
Run Code Online (Sandbox Code Playgroud)

提到了这一点,尽管不一定在nvm doc中闪耀

如果您有〜/ .npmrc文件,请确保它不包含任何前缀设置(与nvm不兼容)