安装失败无非两个原因:
node版本与node-sass不兼容- m1&m2架构与
node-sass不兼容
针对node版本与node-sass不兼容
| NodeJS | Minimum node-sass version | Node Module |
|---|---|---|
| Node 14 | 4.14+ | 83 |
| Node 13 | 4.13+ | 79 |
| Node 12 | 4.12+ | 72 |
| Node 11 | 4.10+ | 67 |
| Node 10 | 4.9+ | 64 |
| Node 8 | 4.5.3+ | 57 |
思路很简单,根据你项目里package.json里node-sass的版本,使用nvm切换到对应的node版本即可。
针对m1&m2架构与node-sass不兼容
需要使用Rosetta模拟x86架构,在我无限的查询百度、谷歌和github的issue之后,最终在成功安装node-sass的项目里,从node_modules里找到node-sass的目录,其中在README.md中发现了关键的代码:
npm install -g mirror-config-china --registry=http://registry.npm.taobao.org
npm install node-sass
然后恍然大悟。
注:因为我用的node-sass的版本比较低,上面的淘宝镜像并不是最新的
终极解决步骤
全部的操作使用iterm进行,如果要使用vscode的终端,需要配置settings.json,自行百度吧,我就不贴了。
前置操作:
- 以Rosetta的方式打开
iterm brew install pyenvpyenv install 2.7.18pyenv global 2.7.18export PATH="$(pyenv root)/shims:${PATH}"echo 'PATH=$(pyenv root)/shims:$PATH' >> ~/.zshrc
注:如果省略前置操作,不确定会不会影响后续的安装
核心操作:(我的node-sass版本是4.14.1,所以需要使用node14的版本)
- 以
Rosetta的方式打开iterm - 安装
nvm nvm uninstall 14nvm install v14rm -rf node_modulesnpm install -g mirror-config-china --registry=https://registry.npmmirror.comnpm install -D node-sassnpm install
结语
我找了三个不同的项目,按上面的终极解决方案一步一步的执行,全部成功安装,并正常运行。