ChatGPT解决这个技术问题 Extra ChatGPT

错误:“node-sass”版本 5.0.0 与 ^4.0.0 不兼容

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

安装:

反应 v17.0.1,

节点萨斯 v5.0.0,

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

文件 App.js

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.

文件包.json

{
  "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"
  },
 ...

  }
}

N
Nicolas Hevia

TL;博士

npm 卸载 node-sass npm install sass

或者,如果使用 Yarn

纱线删除节点萨斯纱线添加萨斯

Edit3:是的,另一个编辑。迁移到 sass (dart-sass) 是最好的解决方案。前一个包括将 node-sass 锁定到 4.xx 版本,该版本已有 2 年历史,缺乏更新的 SCSS 功能。

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

现在的建议是:如果您只安装 node-sass,请检查以下解决方法(和注释)。如果您正在处理一个空白项目并且您可以管理您的 Webpack 配置(不使用 CRA 或 CLI 来构建您的项目),请安装最新的 sass-loader。

编辑:此错误来自 sass-loader。由于 node-sass @latest 是 v5.0.0 并且 sass-loader 需要 ^4.0.0,因此存在 semantic versioning 不匹配。

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

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

卸载 node-sass

npm uninstall node-sass

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

npm install node-sass@4.14.1

注意:LibSass(因此也是 node-sass)is deprecated 和 dart-sass 是推荐的实现。 You can use sass instead,它是 dart-sass 的 Node.js 分发版,编译为纯 JavaScript。


出于某种原因,yarn add node-sass@4.14.1 更快
看起来他们刚刚在 github.com/webpack-contrib/sass-loader/commit/… 中修复了这个问题,所以你可以安装 sass-loader@10.0.5
@TylikStec yarn 是另一个包管理器,但不要在同一个项目中使用两者,有两个锁文件可能会导致部署问题
@marcin 你说“他们”很有趣,因为发布答案的人就是修复它的人:]
在一个类似于 OP 的全新 React 项目中,我有“node-sass”:“v5.0.0”和“sass-loader”:“^10.1.0”,但问题仍然存在。我的节点版本是 15.3.0。当我卸载 node-sass 并重新安装 @4.14.1 时,问题仍然存在,因为我使用的是 Node 版本 15.3.0,它需要 node-sass 版本 5.0+。
P
Peter Mortensen

您收到此类错误的唯一原因是您的 Node.js 版本与您的 node-sass 版本不兼容。

因此,请务必查看 node-sass 上的文档。

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

https://i.stack.imgur.com/riQwb.jpg

例如,如果您在 Windows 系统上使用 Node.js 版本 12(“可能”),那么您应该必须安装 node-sass 版本 4.12。

npm install node-sass@4.12

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


使用这种方法,您将被锁定到 v4.x,而不是拥有最新版本的 v4。例如,即使节点 12 支持 4.14,它也会被 4.12 卡住。除非您使用与安装 4.14.1(最新已知版本的 v4)相同的 npm install node-sass@^4.12,否则 npm update node-sass 将不起作用。
感谢您的回复 Nicolas Hevia,但我一直在尝试上面的代码,您是对的,如果我使用 npm install node-sass@4.12,它无法更新该版本的 node-sass。但是我一直在 nodejs 12.18.3 中尝试使用 node-sass 4.14.1,但它不起作用。这就是为什么我推荐使用 node-sass 团队推荐的版本,而我不使用 ^。因为会更新到最新版本的node-sass 4
这与其他建议相反。
这行得通,我在安装 node-sadd@4 时遇到了一些问题
但我的节点版本是 v16.9.1 & node-sass 6.0.1 与该节点版本兼容
P
Peter Mortensen

卸载节点萨斯:

npm uninstall node-sass

通过以下方式使用 sass

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

小心使用这种方法。 React-scripts 使用 sass-loader v8,它更喜欢 node-sass 而不是 sass(它有一些 node-sass 不支持的语法)。如果两者都安装并且用户使用 sass,这可能会导致 css 编译错误。
此外,请注意全局安装。
避免对项目特定依赖项进行全局安装。在项目存储库中,您始终可以使用 npx 示例 npx sass 引用本地依赖项。
我将 node v14.15.3 与 node-sass 4.14.1 一起使用,并且只有 sass 方法有效。卸载并重建 node-sass 或将其升级到 5.x 并不能解决问题。谢谢!
这是最好的答案,因为 webpack 强烈推荐使用 Dart Sass
y
yoel halb

node-sass aka LibSassofficially deprecated as of October 26 2020,而您应该使用 sass aka Dart Sass

对于 npm,您可以这样做:

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

对于 yarn,请执行以下操作:

yarn remove node-sass
yarn add sass

即使在那个纱线解决方案之后,我得到 Node Sass 版本 6.0.1 与 ^4.0.0 不兼容 || ^5.0.0。
@Erik Martines Sanches 从错误消息中可以明显看出节点 sass 没有被卸载
@ErikMartinesSanches 尝试在安装后重新启动您的节点服务器。
这个解决方案对我有用
P
Peter Mortensen

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

npm uninstall node-sass

然后安装 sass:

npm install sass

对于使用 Yarn 的用户:

yarn remove node-sass
yarn add sass

即使在尝试“yarn remove node-sass”之前,我的 package.json 中也没有列出 node-sass。
你能解决这个问题吗?如果不是,也许您可以描述您所面临的情况,我们可以尝试制定解决方案。
P
Peter Mortensen

如果您碰巧将 CRA 与默认的 Yarn 包管理器一起使用,请使用以下内容。它对我有用。

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

B
Brian Burns

使用 npm,

npm uninstall node-sass npm install node-sass 将 package.json 中的 "react-scripts": "4.0.0" 更改为 "react-scripts": "4.0.3" 并保存 npm install npm start

或者,使用纱线 -

yarn remove node-sass yarn add --dev node-sass 如上 yarn install yarn start


确认这适用于 Node 15 和 node-sass 5.0.0。
没有工作缺少绑定/Users/giz/code/genesislabs/client/node_modules/node-sass/vendor/darwin-x64-83/binding.node节点Sass找不到您当前环境的绑定:OS X 64-bit with节点.js 14.x
P
Peter Mortensen

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

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

r
renu dadhich

添加特定版本的 node-sass 包(node-sass@4.14.1)后它对我有用


P
Peter Mortensen

根据 Edit2 of Nicolas Hevia 的说法

sass-loader v10.0.5 修复了它

我启动了这个命令:

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

这解决了我的问题。

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


这个答案解决了我的问题
T
TT.

如果错误是

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

Step1:停止服务器

Step2:运行命令为npm uninstall node-sass

Step3:检查 package.json 中的 node-sass,如果文件中存在 node-sass,则再次运行 Step2。

Step4: npm install node-sass@4.14.1 <=== 运行命令

Step5:等待命令成功运行。

Step6: 使用 npm start 启动服务器


I
Ibrahim BHMBS

我遇到了同样的问题,这是我能够解决的方法:

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

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

因此,升级或降级 Node.js 版本的最佳方式已在上面的 this answer 中提及。然后删除 node_modulespackage-lock.json 并重新安装...您可以这样做:

npm cache clean --force

rm -rf /node_modules package-lock.json

npm install

npm audit fix

npm run <your_script_name>

M
Mark O

你可以切换到 sass,因为 node-sass 现在已经被弃用了

在你的 package.json

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

React 在删除它并替换为 sass 后仍然要求 node-sass ,因此您可以像这样为它起别名,现在 react 将使用 sass


不要小看最后的答案!这种信念反复帮助了我
R
Rocky

只需在 package.json 文件中将版本更改为:“version”:“4.14.1”


V
Vishal Pratap

添加 sass-loader 作为开发依赖项为我解决了这个问题。 “devDependencies”:{“node-sass”:“^6.0.0”,“sass-loader”:“^11.1.1”}


P
Peter Mortensen

小更新:如果您收到关于 node-sass 的以下错误,请按照以下步骤操作。

代码 EPERM npm 错误!系统调用取消链接

解决问题的步骤:

关闭 Visual Studio 手动从 node_modules 中删除 .node-sass.DELETE 打开 Visual Studio npm 缓存验证 npm install node-sass@4.14.1


关于“Visual Studio”:你的意思是Visual Studio Code吗?
N
Netanel Mantzur

删除项目中的一个 yarn.lock 文件,然后

yarn remove node-sass
yarn add node-sass

S
Stephanieraymos

在 app.js 或任何要导入 css 的地方,确保导入 css 而不是 scss。 package.json 中的脚本将创建一个 css 文件,这就是应该导入的内容。

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

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

要运行脚本:

npm run scss

文件结构示例:src/scss/styles.scss

脚本创建的 CSS 文件:src/css/styles.css


L
Learn More

否则重建你的 node-sass 以便兼容性不会产生错误。当 node-sass 和 node 不兼容时,你会得到 typescript errors 。这样做是为了实现 node-sass 兼容性。

npm 重建节点-sass


M
Mudasir H

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

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

注意:您可以通过 google 来检查哪个 sass-loader 版本与您的 node-sass 版本兼容。

“devDependencies”:{“node-sass”:“^6.0.1”,“sass-loader”:“^10.2.0”}


D
Dariusz Woźniak

更新的答案

请注意 Node Sass 已贬值,您可以将其替换为 Dart Sass:

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

来源:https://www.npmjs.com/package/node-sass

下面的食谱帮助了我:

卸载 node-sass: npm: npm uninstall node-sass yarn: yarn remove node-sass 卸载 sass-loader: npm: npm uninstall sass-loader yarn: yarn remove sass-loader 安装 Dart Sass 作为开发依赖 npm: npm install sass -dev 纱线:纱线添加 sass -dev

在构建之前,您还应该:

移除 node_modules 目录移除锁文件:npm:移除 package-lock.json yarn:移除 yarn.json


P
Peter Mortensen

解决此问题的步骤:

转到您的 node_module 文件夹并打开 node-sass 模块。在 node-sass 内的 package.json 文件中,将版本从“5.0.0”更改为“4.14.1”。最后在主项目根目录的 package.json 中再次将 node-sass 版本从“5.0.0”更改为“4.14.4”。

这应该有效。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅