我已经创建了一个空白的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"
},
...
}
}
博士TL;
NPM卸载node-sass
NPM安装sass
或者,如果使用Yarn
纱线拆卸节点
纱加纱
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
NPM卸载node-sass
然后安装最新版本(5.0之前)
NPM安装node-sass@4.14.1
注意:LibSass(因此node-sass也是)已弃用,dart-sass是推荐的实现。你可以使用sass,它是一个Node.js发行版的dart-sass,编译成纯JavaScript。
博士TL;
NPM卸载node-sass
NPM安装sass
或者,如果使用Yarn
纱线拆卸节点
纱加纱
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
NPM卸载node-sass
然后安装最新版本(5.0之前)
NPM安装node-sass@4.14.1
注意:LibSass(因此node-sass也是)已弃用,dart-sass是推荐的实现。你可以使用sass,它是一个Node.js发行版的dart-sass,编译成纯JavaScript。