安装node-sass
大家好,这里是不止前端,专注前端开发过程中的难点问题,并给予最准确的解答。
那么今天的问题是,如何正确安装node-sass
设想一下,你入职了一个新公司,同事发了你一个新的前端项目,你clone下来之后,第一步必然是先npm i安装依赖
然后装到一半,卡了,提示的错误信息一般大概是这个样子
不用仔细看,快速往下滑即可
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated lodash.isarray@4.0.0: This package is deprecated. Use Array.isArray.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated tar@2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.
npm ERR! code 1
npm ERR! path D:\testproj\node_modules\node-sass
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node scripts/build.js
npm ERR! Building: D:\node\node.exe D:\testproj\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp verb cli [
npm ERR! gyp verb cli 'D:\\node\\node.exe',
npm ERR! gyp verb cli 'D:\\testproj\\node_modules\\node-gyp\\bin\\node-gyp.js',
npm ERR! gyp verb cli 'rebuild',
npm ERR! gyp verb cli '--verbose',
npm ERR! gyp verb cli '--libsass_ext=',
npm ERR! gyp verb cli '--libsass_cflags=',
npm ERR! gyp verb cli '--libsass_ldflags=',
npm ERR! gyp verb cli '--libsass_library='
npm ERR! gyp verb cli ]
npm ERR! gyp info using node-gyp@3.8.0
npm ERR! gyp info using node@16.14.0 | win32 | x64
npm ERR! gyp verb command rebuild []
npm ERR! gyp verb command clean []
npm ERR! gyp verb clean removing "build" directory
npm ERR! gyp verb command configure []
npm ERR! gyp verb check python checking for Python executable "python2" in the PATH
npm ERR! gyp verb `which` failed Error: not found: python2
npm ERR! gyp verb `which` failed at getNotFoundError (D:\testproj\node_modules\which\which.js:13:12)
npm ERR! gyp verb `which` failed at F (D:\testproj\node_modules\which\which.js:68:19)
npm ERR! gyp verb `which` failed at E (D:\testproj\node_modules\which\which.js:80:29)
npm ERR! gyp verb `which` failed at D:\testproj\node_modules\which\which.js:89:16
npm ERR! gyp verb `which` failed at D:\testproj\node_modules\isexe\index.js:42:5
npm ERR! gyp verb `which` failed at D:\testproj\node_modules\isexe\windows.js:36:5
npm ERR! gyp verb `which` failed at FSReqCallback.oncomplete (node:fs:198:21)
npm ERR! gyp verb `which` failed python2 Error: not found: python2
npm ERR! gyp verb `which` failed at getNotFoundError (D:\testproj\node_modules\which\which.js:13:12)
npm ERR! gyp verb `which` failed at F (D:\testproj\node_modules\which\which.js:68:19)
npm ERR! gyp verb `which` failed at E (D:\testproj\node_modules\which\which.js:80:29)
npm ERR! gyp verb `which` failed at D:\testproj\node_modules\which\which.js:89:16
npm ERR! gyp verb `which` failed at D:\testproj\node_modules\isexe\index.js:42:5
npm ERR! gyp verb `which` failed at D:\testproj\node_modules\isexe\windows.js:36:5
npm ERR! gyp verb `which` failed at FSReqCallback.oncomplete (node:fs:198:21) {
npm ERR! gyp verb `which` failed code: 'ENOENT'
npm ERR! gyp verb `which` failed }
这种时候一般你会把报错信息去搜索,然后会得到可能是如下的处理办法
- 执行npm clean,重新npm i
- 使用cnpm
- 安装python
- 网络不行,需要特殊的上网方法
安装失败的原因
以上说法并不全对,实际上是这样,node-sass安装的时候需要下载一个二进制文件,如果无法下载,会尝试在本地编译该文件(非常非常非常麻烦,千万不要尝试)
以上的报错就是编译时的报错,根本不用看,没有任何帮助
那么为什么会下载失败,无非就是两个原因
- 网络问题,下载不下来
- 你安装的node-sass需要的node版本不对
如何处理安装失败
关于原因1,这个问题大家都懂,当然我还是要发一下的,命令行输入
今天是2025年4月24日 测试https://npm.taobao.org/mirrors/node-sass/已经失效,请大家务必不要使用
npm config set registry "http://registry.npm.taobao.org/"
:: =========今天是2025年4月24日 测试https://npm.taobao.org/mirrors/node-sass/已经失效,请大家务必不要使用========
npm config set sass_binary_site "https://npm.taobao.org/mirrors/node-sass/"
不建议挂代理,npm如果需要使用代理需要另行设置,比较麻烦
之后使用npm config list查看是否设置成功
至于问题2,node-sass的github主页已经给出了详细表格
NodeJS | Supported node-sass version | Node Module |
---|---|---|
Node 17 | 7.0+ | 102 |
Node 16 | 6.0+ | 93 |
Node 15 | 5.0+, <7.0 | 88 |
Node 14 | 4.14+ | 83 |
Node 13 | 4.13+, <5.0 | 79 |
Node 12 | 4.12+, <8.0 | 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 |
所以你首先需要看下你项目的package.json里指定的node-sass是什么版本,然后安装对应版本的node
比如我需要安装的node-sass的版本是是4.15,那么我需要安装的nodejs版本是14
如果需要更详细的判断,你可以在命令行输入
node -p "[process.platform, process.arch, process.versions.modules].join('-')"
复制显示出来的字符串,去releases页面按ctrl+F进行搜索
表格上面就是你电脑能装的node-sass版本,如果找不到,则说明你的node版本太高了,需要降级node版本
总结原因:
- 没有设置npm
- 当前版本的node-sass对应的node版本不对
感谢大家观看该文章,希望对大家有所帮助