错误:“节点sass”版本5.0.0与^4.0.0不兼容

我已经在NPMv7.0.7和Node.jsv15.0.1上使用命令创建了一个空白的React项目:npxcreatereact-app

已安装:

  • 反应v17.0.1
  • 节点sass v5.0.0

然后我尝试将一个空白的.scss文件导入应用程序组件:

文件App.js

导入'/App.scss'
函数App(){
返回(
<div className="App"
应用程序
</div>
);
}
导出默认应用程序;

它抛出一个错误:

未能编译。
./src/App.scss(./node_modules/css loader/dist/cjs.js??ref--5-oneOf-6-1!。/node_modules/postss loader/src??postss!。/node_modules/resolve url loader??ref--5-oneOf-6-3!。/node_modules/s
ass加载器/dist/cjs.js??参考-5-oneOf-6-4!。/src/App.scss)
错误:节点Sass版本5.0.0与^4.0.0不兼容。

文件package.json

{
&“名称”:“react-17-node-sass-5”;,
&“版本”:“0.1.0”;,
&“私人”:没错,
&“依赖性”:{
&“@测试库/jest dom”:“^5.11.5”;,
&“@testing library/react”:“^11.1.0”;,
&“@测试库/用户事件”:“^12.1.10”;,
&节点sass:“^5.0.0”;,
&“反应”:“^17.0.1”;,
&“react dom”:“^17.0.1”;,
&“反应脚本”:“4.0.0”;,
&“网络重要信息”:“^0.2.4”;
},
...
}
}

TL;DR

  1. npm卸载节点sass
  2. npm安装节点[email protected]

或者,如果使用纱线(在较新的CRA版本中默认)

  1. 纱线移除节点sass
  2. 纱线添加节点[email protected]

Edit2:sass加载程序v10.0.5修复了它。问题是,您可能没有将其用作项目依赖项,而是更多地用作依赖项的依赖项。CRA使用固定版本,角度cli锁定到节点sass v4,等等

现在的建议是:如果您只安装节点sass,请检查以下解决方法(以及注释)。如果您正在处理一个空白项目,并且可以管理您的Web包配置(不使用CRA或CLI来构建项目),请安装最新的sass加载程序


编辑:此错误来自sass加载程序。存在语义版本不匹配,因为节点[email protected]是v5.0.0,而sass loader需要^4.0.0

他们的存储库中有一个未解决的问题,需要检查相关的修复程序。在此之前,请参考下面的解决方案


解决方法:暂时不要安装节点sass 5.0.0(主要版本刚刚升级)

卸载节点sass

npm卸载节点sass

然后安装最新版本(5.0之前)

npm安装节点[email protected]


注意:LibSass(因此也是节点sass)已被弃用,建议使用dart sass。您可以改用sass,它是编译为纯JavaScript的dart sass的Node.js发行版

不过,请注意:

使用这种方法时要小心。React脚本使用sass loader v8,它更喜欢节点sass而不是sass(节点sass不支持某些语法)。如果两者都已安装且用户使用sass,则可能会导致CSS编译错误

发表评论