我使用节点9.3.0已经很长时间了,但是最近我迁移到10.12.0。一切顺利,当我执行node -v
和npm -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
删除节点9.3.0 nvm reinstall-with-packages
~/.nvmrc
,然后在其中放置10.12.0
答案 0 :(得分:5)
在经过数小时的Unix痛苦的调试之后,我意识到问题是我在npm config
中设置了前缀:
prefix = "/Users/paulrberg/.nvm/versions/node/v9.3.0"
如果您偶然发现了类似的问题,请确保通过以下操作取消设置该问题:
npm config rm prefix
这确实是mentioned,尽管不一定会在nvm页面上发光:
如果有〜/ .npmrc文件,请确保它不包含任何前缀 设置(与nvm不兼容)
答案 1 :(得分:1)
您似乎可能需要运行nvm reinstall-packages
https://github.com/creationix/nvm#migrating-global-packages-while-installing
上面写着
在安装时迁移全局软件包 如果要安装新版本的Node.js并从以前的版本迁移npm软件包:
nvm install node --reinstall-packages-from=node
这将首先使用“ nvm版本节点”来标识您要从中迁移软件包的当前版本。然后,它将解析要从远程服务器安装的新版本并进行安装。最后,它运行“ nvm reinstall-packages”以将npm软件包从以前的Node版本重新安装到新版本。
您还可以像这样从特定版本的Node安装和迁移npm软件包:
nvm install 6 --reinstall-packages-from=5
nvm install v4.2 --reinstall-packages-from=iojs
另一个“解决方案”是不使用全局包。特别是在使用nvm且无法确定全局软件包是否适用于“当前”版本时,最好在本地安装并使用npx
运行本地命令
松露菌truffle
会在./node_modules/.bin中安装npm install
命令,以便您可以npx truffle
运行本地命令而不是truffle
运行全局
编辑:
要检查的另一件事是node -v
和nvm current
不一定报告相同的版本。
我想知道nvm current
是否会为您报告v9.3?
是的,是的,我可以在与node -v
报告不同的位置上全局安装松露
> node -v
v9.5.0
> nvm current
system
> nvm use v8
Now using node v8.4.0 (npm v5.3.0)
> node -v
v8.4.0
> nvm current
v8.4.0
> npm install -g truffle
/Users/pauldambra/.nvm/versions/node/v8.4.0/bin/truffle -> /Users/pauldambra/.nvm/versions/node/v8.4.0/lib/node_modules/truffle/build/cli.bundled.js
+ truffle@4.1.14
added 81 packages in 4.364s
因此,您可能缺少nvm use v10
命令
答案 2 :(得分:0)
我认为,支持文档中的this section是更永久的解决方案。
安装时文件中的默认全局软件包
如果您有每次要安装新版本时要安装的默认软件包的列表,我们也支持-只需将软件包名称(每行一个)添加到文件$ NVM_DIR / default-packages中即可。您可以在命令行上添加npm接受为包参数的任何内容。