我创建了一个空白的 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"
},
...
}
}
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。
您收到此类错误的唯一原因是您的 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 版本。
npm install node-sass@^4.12
,否则 npm update node-sass 将不起作用。
npm install node-sass@4.12
,它无法更新该版本的 node-sass。但是我一直在 nodejs 12.18.3 中尝试使用 node-sass 4.14.1,但它不起作用。这就是为什么我推荐使用 node-sass 团队推荐的版本,而我不使用 ^
。因为会更新到最新版本的node-sass 4
v16.9.1
& node-sass 6.0.1
与该节点版本兼容
卸载节点萨斯:
npm uninstall node-sass
通过以下方式使用 sass:
npm install -g sass
npm install --save-dev sass
npx sass
引用本地依赖项。
Dart Sass
node-sass
aka LibSass 是 officially 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。
npm uninstall node-sass
然后安装 sass:
npm install sass
对于使用 Yarn 的用户:
yarn remove node-sass
yarn add sass
使用 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
这是版本问题。安装正确的依赖版本:
npm uninstall node-sass
npm install node-sass@4.14.1
添加特定版本的 node-sass 包(node-sass@4.14.1)后它对我有用
根据 Edit2 of Nicolas Hevia 的说法
sass-loader v10.0.5 修复了它
我启动了这个命令:
npm install sass-loader@^10.0.5 node-sass --save-dev
这解决了我的问题。
请注意,我处于开发环境中。在其他情况下,应删除选项 --save-dev
。
如果错误是
错误: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
启动服务器
我遇到了同样的问题,这是我能够解决的方法:
首先,您必须知道您在项目中使用的是哪个 node-sass
版本。然后将您当前的 Node.js 版本升级或降级到与您当前的 node-sass
版本兼容的版本,您可以从 this link 知道这一点。
当然,停止服务器,并关闭你的 IDE。
因此,升级或降级 Node.js 版本的最佳方式已在上面的 this answer 中提及。然后删除 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>
你可以切换到 sass,因为 node-sass 现在已经被弃用了
在你的 package.json
"node-sass": "npm:sass@^1.49.9",
React 在删除它并替换为 sass 后仍然要求 node-sass ,因此您可以像这样为它起别名,现在 react 将使用 sass
只需在 package.json 文件中将版本更改为:“version”:“4.14.1”
添加 sass-loader 作为开发依赖项为我解决了这个问题。 “devDependencies”:{“node-sass”:“^6.0.0”,“sass-loader”:“^11.1.1”}
小更新:如果您收到关于 node-sass 的以下错误,请按照以下步骤操作。
代码 EPERM npm 错误!系统调用取消链接
解决问题的步骤:
关闭 Visual Studio 手动从 node_modules 中删除 .node-sass.DELETE 打开 Visual Studio npm 缓存验证 npm install node-sass@4.14.1
删除项目中的一个 yarn.lock 文件,然后
yarn remove node-sass
yarn add node-sass
在 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
否则重建你的 node-sass 以便兼容性不会产生错误。当 node-sass 和 node 不兼容时,你会得到 typescript errors 。这样做是为了实现 node-sass 兼容性。
npm 重建节点-sass
此错误是由于 sass 加载程序的版本与 node-sass 不兼容。
在 package.json 文件的末尾添加这些依赖项。
注意:您可以通过 google 来检查哪个 sass-loader 版本与您的 node-sass 版本兼容。
“devDependencies”:{“node-sass”:“^6.0.1”,“sass-loader”:“^10.2.0”}
更新的答案
请注意 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
解决此问题的步骤:
转到您的 node_module 文件夹并打开 node-sass 模块。在 node-sass 内的 package.json 文件中,将版本从“5.0.0”更改为“4.14.1”。最后在主项目根目录的 package.json 中再次将 node-sass 版本从“5.0.0”更改为“4.14.4”。
这应该有效。
不定期副业成功案例分享
yarn add node-sass@4.14.1
更快