Creé un proyecto React en blanco, usando el comando: npx create-react-app en npm v7.0.7 y Node.js v15.0.1
Instalado:
Luego traté de importar un archivo .scss en blanco al componente de la aplicación:
import './App.scss' function App() { return ( <div className="App"> App </div> ); } export default App;Me arroja un error:
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. { "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;DR
npm uninstall node-sassnpm install sassO, si usa hilo
yarn remove node-sassyarn add sassEdit3 : sí, otra edición. Pasar a sass (dart-sass) es la mejor solución. El anterior incluía el bloqueo de node-sass a la versión 4.xx, que tiene 2 años y carece de funciones SCSS más nuevas.
Edit2 : sass-loader v10.0.5 lo arregla. El problema es que es posible que no lo esté utilizando como una dependencia del proyecto, sino más bien como una dependencia de sus dependencias. CRA usa una versión fija, angular-cli se bloquea en node-sass v4, etc.
La recomendación por ahora es: si está instalando solo node-sass, verifique la solución a continuación (y la nota). Si está trabajando en un proyecto en blanco y puede administrar la configuración de su paquete web (sin usar CRA o una CLI para montar su proyecto), instale el último sass-loader.
Editar : este error proviene de sass-loader . Hay un desajuste de versiones semánticas ya que node-sass @latest es v5.0.0 y sass-loader espera ^4.0.0.
Hay un problema abierto en su repositorio con una solución asociada que debe revisarse. Hasta entonces, consulte la solución a continuación.
Solución alternativa : no instale node-sass 5.0.0 todavía (la versión principal acaba de actualizarse).
Desinstalar node-sass
npm uninstall node-sass
Luego instale la última versión (antes de la 5.0)
npm install node-sass@4.14.1
Nota: LibSass (por lo tanto, node-sass también) está en desuso y dart-sass es la implementación recomendada. En su lugar, puede usar sass , que es una distribución Node.js de dart-sass compilada en JavaScript puro.
Si el error es
Error: Node Sass versión 5.0.0 no es compatible con ^4.0.0
Paso 1: detener el servidor
Paso 2: los comandos de ejecución son npm uninstall node-sass
Paso 3: verifique node-sass en package.json si node-sass está disponible en el archivo y luego vuelva a ejecutar el Paso 2.
Paso 4: npm install node-sass@4.14.1 <=== comando de ejecución
Paso 5: espere hasta que el comando se ejecute con éxito.
Paso 6: inicie el servidor usando npm start
Funcionó para mí después de agregar una versión particular del paquete node-sass (node-sass@4.14.1)
La única razón por la que obtiene un error como ese es porque su versión de Node.js no es compatible con su versión de node-sass.
Por lo tanto, asegúrese de consultar la documentación en node-sass .
O esta imagen a continuación lo ayudará a decidir qué versión de Node.js puede usar la versión de node-sass.
Por ejemplo, si está utilizando la versión 12 de Node.js en su sistema Windows ("quizás"), entonces debería instalar la versión 4.12 de node-sass .
npm install node-sass@4.12Si, como esto. Entonces, ahora solo necesita instalar la versión de node-sass recomendada por el equipo de node-sass con la versión de Node.js instalada en su computadora.
Pequeña actualización: en caso de que obtenga el siguiente error con respecto a node-sass, siga los pasos que se detallan a continuación.
código EPERM npm ¡ERROR! Desvincular llamada al sistema
Pasos para resolver el problema:
npm cache verifynpm install node-sass@4.14.1Este es un problema de versión. Instale la versión dependiente correcta:
npm uninstall node-sass npm install node-sass@4.14.1Usando npm,
npm uninstall node-sassnpm install node-sass"react-scripts": "4.0.0" por "react-scripts": "4.0.3" en package.json y guardenpm installnpm starto, usando hilo -
yarn remove node-sassyarn add --dev node-sassyarn installyarn startPasos para resolver este problema:
Vaya a su carpeta node_module y abra los módulos de node-sass.
En el archivo package.json dentro de node-sass, cambie la versión de "5.0.0" a "4.14.1".
Finalmente, en el archivo package.json en la raíz del proyecto principal, vuelva a cambiar la versión de node-sass de "5.0.0" a "4.14.4".
Esto debería funcionar.
Encontré el mismo problema, y así es como pude solucionarlo:
En primer lugar, debe saber qué versión node-sass está utilizando en su proyecto. Luego, actualice o rebaje su versión actual de Node.js a la versión compatible con su versión actual node-sass , puede saberlo desde este enlace .
Por supuesto, detenga el servidor y cierre su IDE.
Por lo tanto, la mejor manera de actualizar o degradar la versión de Node.js se ha mencionado anteriormente en esta respuesta . Luego elimine node_modules y package-lock.json e instálelo de nuevo... Puede hacerlo así:
npm cache clean --force rm -rf /node_modules package-lock.json npm install npm audit fix npm run <your_script_name>Simplemente cambie la versión a: "versión": "4.14.1" en su archivo package.json
node-sass también conocido como LibSass , está oficialmente obsoleto a partir del 26 de octubre de 2020 y, en su lugar, debe usar sass , también conocido como Dart Sass .
Para npm podrías hacer:
npm uninstall node-sass npm install sass --save-dev Para yarn hacer:
yarn remove node-sass yarn add sassAgregar sass-loader como dependencia de desarrollo resolvió esto para mí. "devDependencies": { "nodo-sass": "^6.0.0", "sass-loader": "^11.1.1" }
Según el Edit2 de Nicolás Hevia contando que
sass-loader v10.0.5 lo arregla
Lancé este comando:
npm install sass-loader@^10.0.5 node-sass --save-devEso solucionó mi problema.
Tenga en cuenta que estoy en un entorno de desarrollo. En otros casos, se debe eliminar la opción --save-dev .
En app.js o donde sea que se importe el css, asegúrese de importar css y no scss. El script en package.json creará un archivo css y eso es lo que debe importarse.
"scss": "node-sass --watch -include-path src/scss -o src/css"Este script observará un archivo scss dentro de una carpeta llamada scss que está dentro de src. Luego creará una carpeta css dentro de src y agregará un archivo css dentro de esa carpeta, este es el archivo que debe importar en app.js
Para ejecutar el script:
npm run scss Ejemplo de estructura de archivos: src/scss/styles.scss
Archivo CSS creado por script: src/css/styles.css
O bien Reconstruya su nodo-sass para que la compatibilidad no produzca un error. Cuando ocurre la incompatibilidad entre node-sass y node, obtendrá errores de mecanografiado . Haga esto para lograr la compatibilidad con node-sass.
npm reconstruir nodo-sass
Este error se debe a una versión incompatible del cargador sass con node-sass.
Agregue estas dependencias al final de su archivo package.json.
Nota: puede buscar en Google para verificar qué versión de sass-loader es compatible con su versión de nodo-sass.
"devDependencies": { "nodo-sass": "^6.0.1", "sass-loader": "^10.2.0" }
Elimine un archivo yarn.lock en el proyecto y
yarn remove node-sass yarn add node-sassrespuesta actualizada
Tenga en cuenta que Node Sass está depreciado y puede reemplazarlo por Dart Sass:
Advertencia: LibSass y Node Sass están en desuso. Si bien continuarán recibiendo versiones de mantenimiento indefinidamente, no hay planes para agregar funciones adicionales o compatibilidad con ninguna función nueva de CSS o Sass. Los proyectos que aún lo usan deberían pasar a Dart Sass.
Fuente: https://www.npmjs.com/package/node-sass
La siguiente receta me ayudó:
node-sass :npm uninstall node-sassyarn remove node-sasssass-loader :npm uninstall sass-loaderyarn remove sass-loadernpm install sass -devyarn add sass -devAntes de construir, también debe:
node_modulespackage-lock.jsonyarn.jsonPuede cambiar a sass ya que node-sass está obsoleto ahora de todos modos
en su paquete.json
"node-sass": "npm:sass@^1.49.9",React aún solicita node-sass después de eliminarlo y reemplazarlo con sass para que pueda alias así y ahora reaccionar usará sass