0%

nvm use 命令不生效问题以及解决方法

问题

今天启动项目的时候发现报错了,提示说 node-sass 的版本不适用当前版本的 nodenode-sass 官网有一张表格,记录着 node-sassnode 的对应版本:

NodeJS Supported node-sass version Node Module
Node 16 6.0+ 93
Node 15 5.0+ 88
Node 14 4.14+ 83
Node 13 4.13+, <5.0 79
Node 12 4.12+ 72
Node 11 4.10+, <5.0 67
Node 10 4.9+, <6.0 64
Node 8 4.5.3+, <5.0 57
Node <8 <5.0 <57

我使用的 node-sass 版本为:

1
"node-sass": "^4.12.0"

我记得我的 node 版本应该是 v14.16.0,应该不会有问题啊。

解决?

但是试了几次 npm run serve,都是报错,于是我只好查看了一下我的 node 版本:

1
2
> node --version
v16.3.0

v16.3.0???

我明明是 v14.16.0 啊,怎么变成 v16.3.0 了?我想起前几天好像是用 nvm 安装了一个当前最新的版本,可能那时候安装好没切换回来吧,于是我:

1
2
> nvm use v14.16.0
Now using node v14.16.0 (npm v7.15.1)

大问题

ok!easy,于是我愉快的 npm run serve,靠!怎么还是报错?

我再次查看了一下我的 node 版本:

1
2
> node --version
v16.3.0

怎么没切过去?出了什么问题?

上网查了好多资料,大多数都让我卸载 nvmnode 重新安装的。但是我不想把我的环境搞得一团糟,所以我一直在搜索有没有其他的的解决方案。

终于我看到一个方案是:看看有没有安装除了 nvm 安装的其他 node

于是:

1
which -a node

果然,除了 nvm 下的 node,还有 homebrew 也有个 node。之后我又确认了一下:

1
brew list

确实,列表中有 node。之后我看了我的 history,因为我记得我没有用 homebrew 安装过 node,翻了一遍,确实没有,虽然很好奇,但是我还是准备动手删了它!

1
brew uninstall node

但是却提示:

Error: Refusing to uninstall /opt/homebrew/Cellar/node/16.3.0
because it is required by yarn, which is currently installed.

yarn?原来是你!我终于想到昨天下午为了搭建一个新项目的环境,我安装了 yarn,由于它是依赖于 node 的,所以 homebrew 顺便帮我安装了 node。知道了原因,接下来就好办了。

解决

首先卸载 yarn

1
brew uninstall yarn

然后卸载 node

1
brew uninstall node

之后再重新安装 yarn 并加上忽略依赖项参数:

1
brew install yarn --ignore-dependencies

至此,nvmyarn 终于能和谐共处啦🎉!

参考