错误:& # 39;node-sass& # 39;版本5.0.0与^4.0.0不兼容

我在npm v7.0.7和Node.js v15.0.1上使用命令:npx create-react-app创建了一个空白的React项目

安装:

  • v17.0.1反应,
  • node-sass v5.0.0,

然后我尝试导入一个空白的.scss文件到App组件:

文件# EYZ0

import './App.scss'


function App() {
return (
<div className="App">
App
</div>
);
}


export default App;

抛出错误

Failed to compile.


./src/App.scss (./node_modules/css-loader/dist/cjs.js??ref--5-oneOf-6-1!./node_modules/postcss-loader/src??postcss!./node_modules/resolve-url-loader??ref--5-oneOf-6-3!./node_modules/s
ass-loader/dist/cjs.js??ref--5-oneOf-6-4!./src/App.scss)
Error: Node Sass version 5.0.0 is incompatible with ^4.0.0.

文件# EYZ0

{
"name": "react-17-node-sass-5",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.11.5",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"node-sass": "^5.0.0",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-scripts": "4.0.0",
"web-vitals": "^0.2.4"
},
...


}
}
459060 次浏览

博士TL;

  1. # EYZ0
  2. # EYZ0

或者,如果使用Yarn

  1. # EYZ0
  2. # EYZ0

Edit3:是的,另一个编辑。转移到sass (dart-sass)是最好的解决方案。之前的版本包括将node-sass锁定到4.x版本。x,它有2年的历史,缺乏较新的SCSS特征。


Edit2: sass-loader v10.0.5修复它。问题是,您可能不会将其用作项目依赖项,而更多地是用作依赖项的依赖项。CRA使用一个固定的版本,angular-cli locks到node-sass v4等等。

目前的建议是:如果只安装node-sass,请检查下面的解决方案(以及说明)。如果你在一个空白的项目上工作,你可以管理你的Webpack配置(不使用CRA或CLI来支撑你的项目),安装最新的sass-loader。


编辑:这个错误来自sass-loader。存在语义版本控制不匹配,因为node-sass @latest是v5.0.0,而sass-loader期望^4.0.0。

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


解决方案:不要安装node-sass 5.0.0(主版本刚刚被撞了)。

卸载node-sass

# EYZ0

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

# EYZ0


注意:LibSass(因此node-sass也是)被弃用和dart-sass是推荐的实现。您可以使用sass代替,这是一个Node.js发行版的dart-sass编译成纯JavaScript。

卸载node-sass:

npm uninstall node-sass

使用萨斯通过:

npm install -g sass
npm install --save-dev sass

你得到这样错误的唯一原因,是因为你的Node.js版本与node-sass版本不兼容。

因此,请确保在node-sass处签出文档。

或者下面这张图片将帮助你决定哪个Node.js版本可以使用node-sass版本。

Enter image description here

举个例子,如果你在你的Windows系统上使用Node.js版本12(“可能”),那么你应该安装Node-sass 4.12版本

npm install node-sass@4.12

是的,就像这样。所以现在你只需要安装node-sass团队推荐的node-sass版本,并在你的计算机上安装Node.js版本。

如果您碰巧使用CRA和默认的包管理器,请使用以下方法。这对我很管用。

yarn remove node-sass
yarn add node-sass@4.14.1

如果错误是

错误:节点Sass版本5.0.0与^4.0.0不兼容

步骤1:停止服务器

第二步:执行命令为npm uninstall node-sass

第三步:检查package.json中的node-sass。如果node-sass在文件中可用,则再次运行步骤2。

步骤4:npm install node-sass@4.14.1 <=== run命令

步骤5:等待命令执行成功。

步骤6:使用npm start启动服务器

在添加了一个特定版本的node-sass包(node-sass@4.14.1)后,它对我有效。

小更新:如果您得到关于node-sass的以下错误,请遵循下面给出的步骤。

< p > EPERM代码 npm犯错!系统调用拆开< / p >

解决方法:

  1. 关闭Visual Studio
  2. 手动移除。node-sass。从node_modules删除
  3. 开放Visual Studio
  4. # EYZ0
  5. # EYZ0

这是版本问题。安装正确的依赖版本:

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

使用npm,

  1. # EYZ0
  2. # EYZ0
  3. "react-scripts": "4.0.0"改为< >强package.json < / >强中的"react-scripts": "4.0.3"并保存
  4. # EYZ0
  5. # EYZ0

或者,用纱线-

  1. # EYZ0
  2. # EYZ0
  3. 如上所述
  4. # EYZ0
  5. # EYZ0

解决此问题的步骤:

  1. 进入你的node_module文件夹,打开node-sass模块。

  2. 在node-sass中的package.json文件中,将版本从"5.0.0"4.14.1"“帮助”。

  3. 最后在包中。在主项目的根Json再次更改node-sass版本从"5.0.0"“;4.14.4 !”

这应该有用。

只需更改版本为: “version":“4.14.1"在你的包裹里。json文件< / p >

node-sassLibSass2020年10月26日正式弃用,相反,你应该使用sass飞镖Sass

对于npm,你可以这样做:

npm uninstall node-sass
npm install sass --save-dev

对于yarn做:

yarn remove node-sass
yarn add sass
添加sass-loader作为dev-dependency为我解决了这个问题。 “devdependencies_; {"node-sass": "^6.0.0", "sass-loader"} < / p >

对我来说,最好的解决方案是卸载node-sass

# EYZ0

然后安装sass:

# EYZ0

对于使用的用户:

yarn remove node-sass
yarn add sass

我也遇到过同样的问题,下面是我解决问题的方法:

首先,你必须知道你在项目中使用的是哪个node-sass版本。然后升级或降级你当前的Node.js版本到与你当前的node-sass版本兼容的版本,你可以从这个链接中知道。

当然,停止服务器并关闭IDE。

所以,升级或降级Node.js版本的最好方法,已经在这个答案中提到过。然后删除node_modules,和package-lock.json,并再次安装…你可以这样做:

npm cache clean --force


rm -rf /node_modules package-lock.json


npm install


npm audit fix


npm run <your_script_name>

根据Edit2 尼古拉斯·海维亚的说法

Sass-loader v10.0.5修复了它

我启动了这个命令:

npm install sass-loader@^10.0.5 node-sass --save-dev

这解决了我的问题。

请注意,我是在开发环境中。在其他情况下,应该删除选项--save-dev

在app.js或任何导入css的地方,确保导入css而不是scss。包中的脚本。Json会创建一个CSS文件,这就是应该导入的。

    "scss": "node-sass --watch -include-path src/scss -o src/css"

这个脚本将监视src中名为scss的文件夹中的一个scss文件。然后它会在src中创建一个css文件夹,并在该文件夹中添加一个css文件,这是你应该在app.js中导入的文件

运行脚本:

npm run scss
文件结构示例: # EYZ0 < / p >

CSS文件由脚本创建: # EYZ0 < / p >

或者重建你的node-sass,这样兼容性就不会产生错误。 当node-sass和node发生不兼容时,您将得到打字文件错误

NPM重建node-sass

此错误是由于sass加载器的版本与node-sass不兼容。

在包的末尾添加这些依赖项。json文件。

注意:您可以谷歌来检查哪个sass加载器版本与您的node-sass版本兼容。

< p >“devDependencies": { “node-sass":“^ 6.0.1", “sass-loader":“^ 10.2.0" } < / p >
删除项目中的yarn.lock文件 和< / p >
yarn remove node-sass
yarn add node-sass

请注意Node Sass已弃用,您可以用Dart Sass替换它:

警告:LibSass和Node Sass已弃用。虽然他们将继续无限期地收到维护版本,但没有计划添加额外的功能或与任何新的CSS或Sass功能的兼容性。仍在使用它的项目应该转移到Dart Sass上。

来源:# EYZ0

下面的食谱对我很有帮助:

    <李>卸载# EYZ0:
    • npm: # EYZ0
    • 纱:# EYZ0
    <李>卸载# EYZ0:
    • npm: # EYZ0
    • 纱:# EYZ0
    将Dart Sass安装为开发依赖项
    • npm: # EYZ0
    • 纱:# EYZ0

在建造之前,你还应该:

  1. 删除node_modules目录
  2. 删除锁文件:
    • 删除package-lock.json
    • yarn:删除yarn.json

你可以直接切换到萨斯,因为node-sass现在已经弃用了。

package.json文件中:

"node-sass": "npm:sass@^1.49.9",

在移除它并用Sass替换它之后,React仍然要求node-sass,所以你可以像这样为它命名,现在React将使用Sass。

enter image description here

NPM卸载node-sass

NPM我说