Hata: Node Sass sürüm 5.0.0, ^ 4.0.0 ile uyumsuz


124

Şu komutu kullanarak boş bir React projesi oluşturdum: npx create-react-appnpm v7.0.7 ve Node v15.0.1'de

Kurulmuş:

  • React v17.0.1,
  • düğüm sass v5.0.0,

Sonra boş .scss dosyasını Uygulama bileşenine aktarmayı denedim:

App.js

import './App.scss'

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

export default App;

Bir Hata Atın:

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

Yanıtlar:


199

TL; DR

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

Edit2 : sass-loader v10.0.5 bunu düzeltir. Sorun şu ki, onu bir proje bağımlılığı olarak değil, bağımlılıklarınızın bir bağımlılığı olarak kullanıyor olabilirsiniz. CRA sabit bir sürüm kullanır, köşeli kilitler düğüm sass v4'e vb.
Şimdilik öneri şudur: yalnızca geçici çözümün (ve notun) altındaki düğüm sass denetimini kuruyorsanız. Boş bir proje üzerinde çalışıyorsanız ve web paketi yapılandırmanızı yönetebiliyorsanız (projenizi inşa etmek için CRA veya CLI kullanmadan) en son sass-loader'ı yükleyin.


Düzenleme : Bu hata sass-loader'dan geliyor . Node-sass @latest v5.0.0 olduğundan ve sass-loader ^ 4.0.0 beklediğinden, bir semver uyuşmazlığı var.
Depolarında gözden geçirilmesi gereken ilişkili bir düzeltmeyle ilgili açık bir sorun var. O zamana kadar aşağıdaki çözüme bakın.


Çözüm : node-sass 5.0.0'ı henüz yüklemeyin (ana sürüm az önce çarpıldı).

Node-sass'ı kaldır

npm uninstall node-sass

Ardından en son sürümü yükleyin (5.0'dan önce)

npm install node-sass@4.14.1


Not: LibSass (dolayısıyla node-sass) kullanımdan kaldırılmıştır ve önerilen uygulama dart-sass'tır. Bunun sassyerine , saf JavaScript'e derlenmiş dart-sass'ın bir düğüm dağılımı olan kullanabilirsiniz. Yine de uyarın:

Bu yaklaşımı kullanırken dikkatli olun. React-scripts, sass yerine node-sass'ı tercih eden (node-sass tarafından desteklenmeyen bazı sözdizimlerine sahip) sass-loader v8 kullanır. Her ikisi de yüklüyse ve kullanıcı sass ile çalıştıysa, bu css derlemesinde hatalara neden olabilir


3
nedense yarn add node-sass@4.14.1çok daha hızlı
Tylik Stec

1
Görünüşe göre bunu github.com/webpack-contrib/sass-loader/commit/… adresinde düzelttiler , böylece sass-loader@10.0.5
Marcin

1
@TylikStec ipliği başka bir paket yöneticisi, ancak aynı projede ikisini birden kullanmayın, iki kilit dosyasına sahip olmak dağıtımda sorunlara neden olabilir
Binara Medawatta

5
@marcin cevabı gönderen kişi onu düzelten kişi olduğu için "onlar" demeniz komik:]
Benjamin Gruenbaum

Benim için Gatsby üzerinde çalışıyorum. Teşekkürler!
Diego Fortes

10

Node-sass'ı kaldır

npm uninstall node-sass

sass kullan :

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

Bu benim için çalıştı, teşekkürler.
dro3333

Bu yaklaşımı kullanırken dikkatli olun. React-scripts, sass yerine node-sass'ı tercih eden (node-sass tarafından desteklenmeyen bazı sözdizimlerine sahip) sass-loader v8 kullanır. Her ikisi de yüklüyse ve kullanıcı sass ile çalıştıysa, bu css derlemesinde hatalara neden olabilir.
Nicolas Hevia

4

Böyle bir hata almanızın tek nedeni, düğüm sürümünüzün düğüm-sass sürümünüzle uyumlu olmamasıdır.

Bu nedenle, buradaki belgeleri kontrol ettiğinizden emin olun: https://www.npmjs.com/package/node-sass

Ya da aşağıdaki bu resim size yardımcı olacaktır, düğüm sürümü node-sass sürümünü kullanabilir.

görüntü açıklamasını buraya girin

Örneğin, pencerelerinizde düğüm sürümü 12 kullanıyorsanız ("belki"), düğüm sass 4.12 sürümünü yüklemeniz gerekir .

npm install node-sass@4.12

Evet onun gibi. Yani şimdi sadece node-sass ekibi tarafından önerilen node-sass versiyonunu bilgisayarınıza kurulu node'larla kurmanız gerekiyor.


Bu yaklaşımla, v4'ün en son sürümüne sahip olmak yerine v4.x'e kilitlenirsiniz. Örneğin, düğüm 12, 4.14'ü desteklese bile 4.12 ile sıkışmış olacaktır. npm update node-sass, npm install node-sass@^4.124.14.1 ( v4'ün bilinen en son sürümü) yüklemesiyle aynı olanı kullanmadığınız sürece çalışmayacaktır .
Nicolas Hevia

Cevabınız için teşekkürler Nicolas Hevia, ancak yukarıdaki kodu denedim ve haklısınız, kullanıyorsam bu düğüm sass sürümünü güncelleyemez npm install node-sass@4.12. Ancak nodejs 12.18.3'te node-sass 4.14.1 ile denedim ve çalışmıyor. Bu yüzden node-sass ekibinin önerdiği sürümü kullanmayı tavsiye ettim ve kullanmıyorum ^. Çünkü node-sass 4'ün en son sürümüne güncellenecek
Titus Sutio Fanpula

0

Varsayılan yarnpaket yöneticisiyle CRA kullanıyorsanız, aşağıdakileri kullanın. Benim için çalıştı.

yarn remove node-sass 
yarn add node-sass@4.14.1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.