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

安装:

v17.0.1反应, node-sass 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.

文件package.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"
  },
 ...

  }
}

当前回答

在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

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

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

其他回答

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

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

如果错误是

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

步骤1:停止服务器

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

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

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

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

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

据尼古拉斯·海维亚的编辑说

Sass-loader v10.0.5修复了它

我启动了这个命令:

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

这解决了我的问题。

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

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

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

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

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

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

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