解决sass-loader与node-sass报错

问题:最开始想要学习一下vue-cli更换主题,然后就各种百度,最后说要使用sass,好家伙,就跟着百度的步骤一顿安装,结果,失败了,然后研究了两天,终于,终于解决了这个问题,激动得不知道跟谁分享所以记录下了这篇文章,希望能帮助到跟我相同问题的小伙伴,

报错:这个报错可能是因为无法下载,所以切换到cnmp下载;但是也可能是因为版本不匹配,可以切换安装版本,具体步骤如下。

问题1:下载的原因造成的问题

方法1、本地安装

第一步

如果之前安装了一遍失败了,记得执行卸载,没有则跳过卸载步骤。

卸载:

npm uninstall node-sass

下载地址:
https://github.com/sass/node-sass/releases
进入后下载 binding.node文件

第二步

执行如下代码,意思是告诉它不要去下载了,提取我本地下载的这个东西就行,=后面的就是你放置的位置。记住如果是windows一般的系统都是下载x64或者x86 ,而不是ia64,当然如果你就是需要ia86的话就下载ia86。根据自己的情况而定,不了解的可以去百度一下这两者的关系。

set SASS_BINARY_PATH=D:/xxp/project/win32-x64-64_binding.node

第三步
执行

npm i node-sass -D --verbose
方法2切换淘宝镜像源安装

①安装cnpm,已安装的跳过。

npm install -g cnpm --registry=https://registry.npm.taobao.org

②如果之前安装了一遍失败了,安装前记得卸载之前的,没有则跳过卸载步骤
卸载:

npm uninstall node-sass

③执行安装

cnpm install node-sass

问题2:版本原因造成的问题

一定要记得考虑这个问题,最最重要的问题,我就是被这个问题困了两天,记得看你的node版本和当前安装的版本是否匹配
查看node版本
注意: 很多情况都是 sass-loader和node-sass版本冲突

node -v

下面是我百度的各版本的node-sass和node之间匹配的结果。
下载对应的 版本可以解决大部分 node-sass和node版本冲突问题
在这里插入图片描述

因为我node的版本比较低,所以最后是这样的姿势安装成功的。
当然,老生常谈一遍,执行之前先安装cnpm 上面有步骤的。如果之前安装失败了记得卸载。

cnpm i node-sass@4.14.1 cnpm i sass-loader@7.3.1 --save-dev

报错信息1:

ERROR  Failed to compile with 6 errors                                                                                    7:45:21 PM

 error  in ./src/components/advanceDemo/toastCom.vue?vue&type=style&index=0&id=6f04d134&lang=scss&scoped=true&

Syntax Error: TypeError: this.getOptions is not a function

报错信息2:

error generated.
make: *** [Release/obj.target/binding/src/binding.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/Users/goldwater/Documents/vue/vue3.0-demo/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack     at ChildProcess.emit (node:events:394:28)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12)
gyp ERR! System Darwin 20.2.0
gyp ERR! command "/usr/local/bin/node" "/Users/goldwater/Documents/projectCode/project-learning-repository/vue/vue3.0-demo/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /Users/goldwater/Documents/vue/vue3.0-demo/node_modules/node-sass
gyp ERR! node -v v16.6.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Build failed with error code: 1
npm WARN vue-loader@16.4.1 requires a peer of @vue/compiler-sfc@^3.0.8 but none is installed. You must install peer dependencies yourself.
npm WARN sass-loader@8.0.2 requires a peer of sass@^1.3.0 but none is installed. You must install peer dependencies yourself.
npm WARN sass-loader@8.0.2 requires a peer of fibers@>= 3.1.0 but none is installed. You must install peer dependencies yourself.

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.14.1 postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-sass@4.14.1 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/goldwater/.npm/_logs/2021-08-06T12_04_18_807Z-debug.log

解决办法:

首先要先把上网环境解决了,在~/.npmrc添加以下镜像:

phantomjs_cdnurl=http://cnpmjs.org/downloads
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
registry=https://registry.npm.taobao.org

网上解决方法:

去官方的github仓库去寻找合适的版本

node-sass: https://github.com/sass/node-sass/tags
sass-loader: https://github.com/webpack-contrib/sass-loader/tags
npm uninstall sass-loader node-sass    //卸载
npm install sass-loader@7.3.1 node-sass@4.14.1  --save-dev  //安装对应的版本

最后,还是失败了。

执行以下脚本:

npm uninstall sass-loader node-sass
npm install sass-loader@8.0.2 sass@1.26.5  --save-dev

不要安装node-sass,安装sass就可以了,package.json如下:

{
  "name": "vue3.0-demo-1",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build"
  },
  "dependencies": {
    "core-js": "^3.6.5",
    "joi": "^17.4.2",
    "vue": "^2.6.11"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "eslint": "^7.32.0",
    "eslint-plugin-vue": "^7.15.0",
    // 这两个是重点:sass、sass-loader
    "sass": "^1.26.5",
    "sass-loader": "^8.0.2",
    "vue-template-compiler": "^2.6.11"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ]
}
  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: sass-loadernode-sass 是与 Sass 相关的两个包,常用于在 Webpack 构建工具中处理 Sass 样式文件。 sass-loader 是 Webpack 中的一个 loader,它可以将 Sass 文件转换为 CSS 文件。当 Webpack 在处理模块时遇到了以 .sass 或 .scss 后缀的文件时,就会使用 sass-loader 来将这些文件转换为 CSS 文件。sass-loader 可以支持一些额外的功能,例如在 Sass 文件中使用变量、混合、嵌套等语法特性。 node-sass 是一个使用 C++ 编写的 Sass 编译器,它可以将 Sass 文件编译成 CSS 文件。node-sasssass-loader 的一个依赖项,它实现了 Sass 的编译功能。当 Webpack 在处理 Sass 文件时,sass-loader 会使用 node-sass 这个编译器将 Sass 代码转换为 CSS 代码。由于 node-sass 使用了 C++ 编写,因此它的编译速度比纯 JavaScript 实现的 Sass 编译器要快很多。 综上所述,sass-loadernode-sass 是两个在 Webpack 中处理 Sass 样式文件时经常使用的包,sass-loader 负责将 Sass 文件转换为 CSS 文件,node-sass 则提供了 Sass 的编译功能,使得 sass-loader 可以高效地将 Sass 代码转换为 CSS 代码。 ### 回答2: Sass-loadernode-sass是两个在Webpack开发中常用的Sass编译器。Sass是一种CSS预处理器,可以使用变量、嵌套、继承和函数等高效地编写CSS样式。Sass-loadernode-sass都是用来将Sass代码编译成浏览器可以解析的CSS代码的工具。 Sass-loader是一个Webpack插件,可以将Sass代码转换为CSS,并将其作为模块插入到Webpack构建中。Sass-loader可以通过多种方式设置Sass选项,例如在Webpack的配置文件中设置options对象,或者使用预设的选项。Sass-loader可以与Postcss-loader一起使用,自动添加厂商前缀和其他后处理工具。 Node-sass是一个Sass编译器,使用C++编写并作为Node.js的原生模块,可以快速地将Sass代码编译成CSS。Node-sass支持大多数Sass选项和自定义函数,可以轻松地在Node.js项目中使用。Node-sass还可以与Grunt、Gulp和其他构建工具一起使用,方便编译Sass代码。 总的来说,Sass-loadernode-sass都是强大的工具,可以大大提高Web开发中的CSS编写效率。Sass-loader是Webpack的一个插件,可以将Sass代码转换为CSS,并帮助实现自动添加厂商前缀和其他后处理工具的功能。Node-sass是一个Sass编译器,可以快速地将Sass代码编译成CSS,并且可以方便地与Grunt、Gulp和其他构建工具一起使用。同时,两者也可以结合使用,在Webpack项目中使用Sass-loaderSass打包,使用Node-sass在Node.js项目中编译Sass代码。 ### 回答3: sass-loadernode-sass都是与Sass编译相关的工具,可在Webpack等打包工具中使用。Sass是一种CSS的预处理器,可以在编写CSS时添加变量、函数、嵌套等特性,提高了CSS的可读性和可维护性。以下是sass-loadernode-sass的详细介绍。 sass-loader: sass-loader是Webpack中的一个loader,用于将Sass编译成CSS。它可以自动解析import和url语句,并可以根据需要自定义Sass的选项。sass-loader需要依赖node-sass,因此先要安装node-sass才能使用sass-loadersass-loader的主要特点包括: 1.支持import和url语句的自动解析和处理。 2.可以自定义Sass的选项,如启用sourceMap、输出style格式、添加自定义函数和变量等。 3.支持在Webpack中使用vue-style-loader来提取CSS。 使用sass-loader的相关配置如下: { test: /\.scss$/, use: [ 'vue-style-loader', 'css-loader', 'sass-loader' ] } node-sass: node-sassSass的一个编译器,它是一个由C++模块编写的Node.js模块。它利用了LibSass库的功能来编译Sass文件,可以快速地将Sass编译成CSS。node-sass本身不提供CLI工具,但可以通过在命令行中使用node-sass命令来使用它。 node-sass的主要特点包括: 1.可以使用命令行或API接口来编译Sass文件。 2.支持sourceMap功能,可以在浏览器中调试Sass源代码。 3.支持输出style格式、压缩CSS和自定义函数。 使用node-sass的相关配置如下: const sass = require('node-sass'); sass.render({ file: './app.scss', outFile: './app.css', outputStyle: 'compressed' }, function(err, result) { if(!err) { console.log('Sass编译成功'); } });

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

织_网

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值