node、node-sass、sass-loader的版本兼容问题

45 篇文章 0 订阅

目录

这篇文章主要写node、node-sass、sass-loader三者引起的兼容问题。

使用scss报错

为什么要写这篇文章,安装最新版sass运行报错了。
纳尼,最新版的既然不兼容。

来看看错误提示

 ERROR  Failed to compile with 1 error                                                                                                 下午11:02:54

 error  in ./src/components/ANew.vue?vue&type=style&index=0&id=039d1e2f&lang=scss&scoped=true

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


 @ ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader-v16/dist/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader-v16/dist??ref--0-1!./src/components/ANew.vue?vue&type=style&index=0&id=039d1e2f&lang=scss&scoped=true 4:14-450 14:3-18:5 15:22-458
 @ ./src/components/ANew.vue?vue&type=style&index=0&id=039d1e2f&lang=scss&scoped=true
 @ ./src/components/ANew.vue
 @ ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader-v16/dist??ref--0-1!./src/App.vue?vue&type=script&lang=js
 @ ./src/App.vue?vue&type=script&lang=js
 @ ./src/App.vue
 @ ./src/main.js
 @ multi (webpack)-dev-server/client?http://192.168.10.32:8080&sockPath=/sockjs-node (webpack)/hot/dev-server.js ./src/main.js

网上找了很多资料都是说node-sass和sass-loader版本有问题

当前node-sass、sass-loader版本

"node-sass": "^5.0.0",
"sass-loader": "^11.0.1",

网上的资料反正可以确定是这两个的版本问题,能找到解决方法,但是知其然而不知其所以然。

网上找到比较好的版本,但是这不是我想要的。

sass-loader 4.1.1,node-sass 4.3.0
sass-loader 7.0.3,node-sass 4.7.2
sass-loader 7.3.1,node-sass 4.7.2

测试

步骤一

根据资料更新sass-loader版本

npm uninstall sass-loader
npm install sass-loader@7.3.1


"node-sass": "^5.0.0",
"sass-loader": "^7.3.1",

运行结果

WARN A new version of sass-loader is available. Please upgrade for best experience.
Syntax Error: Error: Node Sass version 5.0.0 is incompatible with ^4.0.0.

1个警告、一个错误

 INFO  Starting development server...
 WARN  A new version of sass-loader is available. Please upgrade for best experience.
98% after emitting CopyPlugin

 ERROR  Failed to compile with 1 error                                                                                                 下午11:18:29

 error  in ./src/components/ANew.vue?vue&type=style&index=0&id=039d1e2f&lang=scss&scoped=true

Syntax Error: Error: Node Sass version 5.0.0 is incompatible with ^4.0.0.


 @ ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader-v16/dist/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader-v16/dist??ref--0-1!./src/components/ANew.vue?vue&type=style&index=0&id=039d1e2f&lang=scss&scoped=true 4:14-450 14:3-18:5 15:22-458
 @ ./src/components/ANew.vue?vue&type=style&index=0&id=039d1e2f&lang=scss&scoped=true
 @ ./src/components/ANew.vue
 @ ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader-v16/dist??ref--0-1!./src/App.vue?vue&type=script&lang=js
 @ ./src/App.vue?vue&type=script&lang=js
 @ ./src/App.vue
 @ ./src/main.js
 @ multi (webpack)-dev-server/client?http://192.168.10.32:8080&sockPath=/sockjs-node (webpack)/hot/dev-server.js ./src/main.js

步骤二

Syntax Error: Error: Node Sass version 5.0.0 is incompatible with ^4.0.0.

根据提示把node-sass降到^4.0.0版本

npm uninstall node-sass
npm install node-sass@4.7.2

???为什么我的不行,报错了!!!
node-sass还安装失败这是为什么???

解决方案

本文需要的条件都出现了

node-sass安装报错
sass-loader降低版本,提示还有更新版。

解决node-sass问题

node-sass报错还是比较常见的
去了新公司,npm install运行node-sass报错。问了边上几个同事都说正常的,说是node的问题。试了根据要求安装了node12。

项目可以正常运行了,但是项目中会所谓一些奇怪的bug,为什么会这样。

这问题我就不解释了,如果有同学遇上了在问为什么。我直接入正题

node和node-sass版本关系

打了npm上node-sass找到node对应的node-sass版本

NodeJS

Supported node-sass version

Node Module

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+

64

Node 8

4.5.3+, <5.0

57

Node <8

<5.0

<57

查看自己的node版本

node -v


v14.11.0

根据node版本安装对应的 node-sass版本

npm uninstall node-sass
npm install node-sass@4.14.1

运行结果,提示sass-loader有更新版本。

WARN A new version of sass-loader is available. Please upgrade for best experience.

 INFO  Starting development server...
 WARN  A new version of sass-loader is available. Please upgrade for best experience.
98% after emitting CopyPlugin

 DONE  Compiled successfully in 2927ms  

安装sass-loader ^11.0以上最新版本

根据大版本安装,node-sass@4.. 支持sass-loader@10..

npm uninstall sass-loader
npm install sass-loader@10.1.1


 ERROR  Failed to compile with 1 error                                                                                                  上午7:36:22

 error  in ./src/components/ANew.vue?vue&type=style&index=0&id=039d1e2f&lang=scss&scoped=true

Syntax Error: Error: PostCSS received undefined instead of CSS string
    at runMicrotasks (<anonymous>)


"node-sass": "^4.14.1",
"sass-loader": "^10.1.1",

未完待续。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据你的问题,以下是 Sass、node-sasssass-loaderNode.js 版本之间的对照关系: - Sass:Sass 是一种 CSS 预处理器,用于编写更灵活、可维护的 CSS 代码。它可以通过命令行工具或者集成到构建工具中使用。 - node-sassnode-sass 是一个将 Sass 编译为 CSS 的 Node.js 模块。它使用 LibSass 库来进行编译,提供了更快的编译速度。你可以在项目中使用 npm 或者 yarn 安装它。 - sass-loadersass-loader 是一个 Webpack 的加载器,用于将 Sass 文件编译为 CSS,并将其应用于你的项目中。它依赖于 node-sass 来进行编译。 - Node.js 版本Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它允许你在服务器端运行 JavaScript 代码。你可以通过运行 `node -v` 命令来查看当前安装的 Node.js 版本。 注意:以下是一些常见的版本对照关系,但具体的版本要求还需根据实际情况来确定: - Sass 版本node-sass 版本没有直接的对照关系,但一般来说,node-sass 应该支持较新版本的 Sass。 - sass-loader版本通常与 webpack 版本关联较密切,你需要根据你正在使用的 webpack 版本来选择合适的 sass-loader 版本。 - Node.js 版本要求可能会因为不同的库和工具而有所不同。你可以查阅它们的官方文档或者 GitHub 页面来获取更详细的信息。 希望这些信息能对你有所帮助!如果你有任何其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值