642 votes

Erreur : Node Sass version 5.0.0 est incompatible avec ^4.0.0

J'ai créé un projet React vierge, en utilisant la commande : npx create-react-app sur npm v7.0.7 et Node v15.0.1

Installé :

  • React v17.0.1,
  • node-sass v5.0.0,

J'ai ensuite essayé d'importer un fichier .scss vierge dans le composant App :

App.js

import './App.scss'

function App() {
  return (
    <div className="App">
      App
    </div>
  );
}

export default App;

Lancer une erreur :

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.

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

  }
}

1147voto

Nicolas Hevia Points 9941

TL;DR

  1. npm uninstall node-sass
  2. npm install node-sass@4.14.1

Ou, si vous utilisez yarn (par défaut dans les nouvelles versions de CRA)

  1. yarn remove node-sass
  2. yarn add node-sass@4.14.1

Edit2 : sass-loader v10.0.5 le répare. Le problème est que vous ne l'utilisez peut-être pas comme une dépendance du projet, mais plutôt comme une dépendance de vos dépendances. CRA utilise une version fixe, angular-cli se verrouille sur node-sass v4 et ainsi de suite.
La recommandation pour le moment est la suivante : si vous installez uniquement node-sass, vérifiez la solution de contournement ci-dessous (et la note). Si vous travaillez sur un projet vierge et que vous pouvez gérer votre configuration webpack (sans utiliser CRA ou une CLI pour échafauder votre projet), installez la dernière version de sass-loader.


Modifier sass-loader . Il y a un décalage entre les semver puisque node-sass @latest est v5.0.0 et sass-loader s'attend à ^4.0.0.
Il y a un problème ouvert sur leur dépôt avec un correctif associé qui doit être examiné. En attendant, reportez-vous à la solution ci-dessous.


Solution de rechange : n'installez pas encore node-sass 5.0.0 (la version majeure vient d'être mise à jour).

Désinstaller node-sass

npm uninstall node-sass

Puis installez la dernière version (avant 5.0)

npm install node-sass@4.14.1


Remarque : LibSass (et donc node-sass également) est déprécié et dart-sass est l'implémentation recommandée. Vous pouvez utiliser sass au lieu de qui est une distribution node de dart-sass compilé en pur JavaScript. Soyez cependant prévenu :

Soyez prudent en utilisant cette approche. React-scripts utilise sass-loader v8, qui préfère node-sass à sass (qui a une syntaxe non supportée par node-sass). Si les deux sont installés et que l'utilisateur a travaillé avec sass, cela peut entraîner des erreurs lors de la compilation des css.

16 votes

Pour une raison quelconque yarn add node-sass@4.14.1 est beaucoup plus rapide

6 votes

On dirait qu'ils viennent de corriger ça dans github.com/webpack-contrib/sass-loader/commit/ Vous pouvez donc installer sass-loader@10.0.5

5 votes

@TylikStec yarn est un autre gestionnaire de paquets, mais n'utilisez pas les deux dans le même projet, avoir deux fichiers de verrouillage peut causer des problèmes lors du déploiement.

102voto

La seule raison pour laquelle vous obtenez une erreur comme celle-là, c'est que votre version de node n'est pas compatible avec votre version de node-sass.

Veillez donc à consulter la documentation ici : https://www.npmjs.com/package/node-sass

Ou cette image ci-dessous vous aidera, quelle version de node peut utiliser la version de node-sass.

enter image description here

Par exemple, si vous utilisez nœud version 12 sur votre Windows (" peut-être "), alors vous devriez installer le node-sass version 4.12 .

npm install node-sass@4.12

Oui, comme ça. Il ne vous reste donc plus qu'à installer la version de node-sass recommandée par l'équipe de node-sass avec les nœuds installés sur votre ordinateur.

0 votes

Avec cette approche, vous êtes bloqué à la v4.x, au lieu d'avoir la dernière version de la v4. Par exemple, node 12 serait bloqué à la 4.12 même s'il supporte la 4.14. npm update node-sass ne fonctionnerait pas à moins d'utiliser npm install node-sass@^4.12 ce qui revient à installer la 4.14.1 (dernière version connue de la v4).

0 votes

Merci pour votre réponse Nicolas Hevia, mais j'ai essayé le code ci-dessus et vous avez raison, il ne peut pas mettre à jour cette version de node-sass si j'utilise la fonction npm install node-sass@4.12 . Mais j'ai essayé avec node-sass 4.14.1 dans nodejs 12.18.3 et ça ne marche pas. C'est pourquoi j'ai recommandé d'utiliser la version que l'équipe node-sass a recommandé et je n'utilise pas ^ . Parce qu'il va mettre à jour la dernière version de node-sass 4

0 votes

Cela va à l'encontre des autres suggestions.

61voto

freeezer98 Points 601

Désinstaller node-sass

npm uninstall node-sass

utiliser sass par :

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

9 votes

Soyez prudent en utilisant cette approche. React-scripts utilise sass-loader v8, qui préfère node-sass à sass (qui a une syntaxe non supportée par node-sass). Si les deux sont installés et que l'utilisateur a travaillé avec sass, cela pourrait entraîner des erreurs lors de la compilation des css.

2 votes

Et aussi, soyez prudent avec les installations globales.

3 votes

Évitez les installations globales pour les dépendances spécifiques au projet. Vous pouvez toujours référencer une dépendance locale avec l'exemple npx npx sass dans le repo du projet.

51voto

yo hal Points 1949

node-sass alias LibSass est officiellement déprécié à partir du 26 octobre 2020 et vous devriez plutôt utiliser sass alias Dart Sass .

Pour npm que vous pourriez faire :

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

Pour yarn faire :

yarn remove node-sass
yarn add sass

0 votes

Même après cette solution de fil, j'obtiens Node Sass version 6.0.1 est incompatible avec ^4.0.0 || ^5.0.0.

0 votes

@Erik Martines Sanches D'après le message d'erreur, il est évident que le nœud sass n'a pas été désinstallé.

0 votes

@ErikMartinesSanches essayez de redémarrer votre serveur node après l'installation.

20voto

Devguru Points 91

La meilleure solution pour moi a été de désinstaller node sass.

npm uninstall node-sass

puis installez sass npm install sass

pour ceux qui utilisent du fil

 yarn remove node-sass
 yarn add sass

0 votes

Node-sass n'est pas listé dans mon package.json même avant d'essayer "yarn remove node-sass".

0 votes

Avez-vous réussi à résoudre ce problème ? Si non, vous pourriez peut-être décrire ce que vous avez rencontré et nous pourrions essayer de trouver une solution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X