node.js - 通过 nvm 升级了 Node 和 npm,但旧 Node 仍然用于全局包

标签 node.js npm node-modules nvm

我已经使用 node 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

但是,当我尝试运行任何 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

和:

npm list -g --depth=0
/Users/paulrberg/.nvm/versions/node/v9.3.0/lib
└── truffle@4.1.14

不确定这是否是一些 bash 代码仍然指向最后一个版本,但我似乎找不到任何证据。运行 env 并检查 9.3.0 环境变量没有产生任何结果。

到目前为止我做了什么:

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

最佳答案

经过几个小时痛苦的 Unix 调试,我意识到问题是我在 npm config 中设置了一个前缀:

prefix = "/Users/paulrberg/.nvm/versions/node/v9.3.0"

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

npm config rm prefix

这是 mentioned , 尽管不一定在 nvm 文档中闪耀

If you have an ~/.npmrc file, make sure it does not contain any prefix settings (which is not compatible with nvm)

关于node.js - 通过 nvm 升级了 Node 和 npm,但旧 Node 仍然用于全局包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52915019/

相关文章:

javascript - 使用 async/await 进行 sql 数据插入

javascript - Express session 在发送后无法使用 "Error: Can' t 设置 header 。”

angularjs - NPM 对等要求错误

javascript - 自定义错误类作为 Node 模块发送自定义错误响应

javascript - 共享 eslint 配置找不到节点模块

node.js - 如何将 STDOUT 从生成的子进程传输到日志文件中并同时将其打印到控制台?

node.js - 如何使用 Nodejs 在没有 OAuth 的情况下使用 Google Drive API?

node.js - Heroku 部署在 "Pruning devDependencies"步骤继续失败

node.js - 使用 docker compose 运行 Node 容器时出错

javascript - 如何让WebStorm/PhpStorm/IntelliJ IDE识别module.exports类型?