ข้อผิดพลาด: Node Sass เวอร์ชัน 5.0.0 เข้ากันไม่ได้กับ ^ 4.0.0


338

ฉันได้สร้างโครงการ React เปล่าโดยใช้คำสั่ง: npx create-react-appบน npm v7.0.7 และ Node v15.0.1

ติดตั้ง:

  • ตอบสนอง v17.0.1
  • โหนด -sass v5.0.0

จากนั้นฉันพยายามนำเข้าไฟล์. scss เปล่าไปยังส่วนประกอบของแอพ:

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

คำตอบ:


568

TL; ดร

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

หรือถ้าใช้เส้นด้าย (ค่าเริ่มต้นใน CRA เวอร์ชันใหม่กว่า)

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

Edit2 : sass-loader v10.0.5แก้ไขได้ ปัญหาคือคุณอาจไม่ได้ใช้มันเป็นการพึ่งพาโปรเจ็กต์ แต่เป็นการพึ่งพาการพึ่งพาของคุณมากกว่า CRA ใช้เวอร์ชันคงที่ angular-cli ล็อคไปยัง node-sass v4 เป็นต้น
คำแนะนำสำหรับตอนนี้คือ: หากคุณกำลังติดตั้งการตรวจสอบ node-sass ด้านล่างวิธีแก้ปัญหาชั่วคราว (และหมายเหตุ) หากคุณกำลังทำงานกับโปรเจ็กต์เปล่าและคุณสามารถจัดการการกำหนดค่า webpack ของคุณ (ไม่ใช้ CRA หรือ CLI เพื่อนั่งร้านโปรเจ็กต์ของคุณ) ติดตั้ง sass-loader ล่าสุด


แก้ไข : ข้อผิดพลาดนี้มาจากเขื่อง-loader มี semver ไม่ตรงกันเนื่องจาก node-sass @latest คือ v5.0.0 และ sass-loader คาดว่า ^ 4.0.0
มีปัญหาที่เปิดอยู่ในที่เก็บของพวกเขาซึ่งมีการแก้ไขที่เกี่ยวข้องซึ่งต้องได้รับการตรวจสอบ ในระหว่างนี้โปรดดูวิธีแก้ไขปัญหาด้านล่าง


วิธีแก้ปัญหา : อย่าติดตั้ง node-sass 5.0.0 เลย (เวอร์ชันหลักเพิ่งถูกชน)

ถอนการติดตั้ง node-sass

npm uninstall node-sass

จากนั้นติดตั้งเวอร์ชันล่าสุด (ก่อน 5.0)

npm install node-sass@4.14.1


หมายเหตุ: LibSass (ด้วยเหตุนี้ node-sass เช่นกัน) จะเลิกใช้งานและ dart-sass คือการใช้งานที่แนะนำ คุณสามารถใช้sassแทนซึ่งเป็นการกระจายโหนดของ dart-sass ที่คอมไพล์เป็น JavaScript บริสุทธิ์ ขอเตือนว่า:

ใช้แนวทางนี้อย่างระมัดระวัง React-scripts ใช้ sass-loader v8 ซึ่งชอบ node-sass ถึง sass (ซึ่งมีไวยากรณ์บางตัวที่ node-sass ไม่รองรับ) หากติดตั้งทั้งสองอย่างและผู้ใช้ทำงานกับ sass อาจทำให้เกิดข้อผิดพลาดในการคอมไพล์ css


6
ด้วยเหตุผลบางอย่างyarn add node-sass@4.14.1เร็วกว่ามาก
Tylik Stec

3
ดูเหมือนว่าพวกเขาเพิ่งแก้ไขในgithub.com/webpack-contrib/sass-loader/commit/…ดังนั้นคุณจึงสามารถติดตั้ง sass-loader@10.0.5
Marcin

3
@TylikStec yarn เป็นผู้จัดการแพ็คเกจอื่น แต่อย่าใช้ทั้งสองอย่างในโปรเจ็กต์เดียวกันการมีไฟล์ล็อกสองไฟล์อาจทำให้เกิดปัญหาในการปรับใช้
Binara Medawatta

14
@marcin เป็นเรื่องตลกที่คุณพูดว่า "พวกเขา" เนื่องจากคนที่โพสต์คำตอบคือคนที่แก้ไข:]
Benjamin Gruenbaum

1
ในโครงการ React ใหม่เอี่ยมที่คล้ายกับ OP ฉันมี "node-sass": "v5.0.0" และ "sass-loader": "^ 10.1.0" แต่ปัญหายังคงอยู่ เวอร์ชันโหนดของฉันคือ 15.3.0 เมื่อฉันถอนการติดตั้ง node-sass และติดตั้งใหม่ @ 4.14.1 ปัญหายังคงมีอยู่เนื่องจากฉันใช้ Node เวอร์ชัน 15.3.0 ซึ่งคาดว่า node-sass เวอร์ชัน 5.0+
boxcarcoder

32

ถอนการติดตั้ง node-sass

npm uninstall node-sass

ใช้sassโดย:

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

4
ใช้แนวทางนี้อย่างระมัดระวัง React-scripts ใช้ sass-loader v8 ซึ่งชอบ node-sass ถึง sass (ซึ่งมีไวยากรณ์บางตัวที่ node-sass ไม่รองรับ) หากติดตั้งทั้งสองอย่างและผู้ใช้ทำงานกับ sass อาจทำให้เกิดข้อผิดพลาดในการคอมไพล์ css
Nicolas Hevia

1
และระวังการติดตั้งทั่วโลกด้วย
Dave Kanter

1
หลีกเลี่ยงการติดตั้งส่วนกลางสำหรับการอ้างอิงเฉพาะโครงการ คุณสามารถอ้างอิงการอ้างอิงในพื้นที่ด้วยตัวอย่าง npx ได้ตลอดเวลาnpx sassในขณะที่อยู่ในโครงการ repo
fengelhardt

ฉันใช้โหนด v14.15.3 กับ node-sass 4.14.1 และมีเพียงวิธี sass เท่านั้นที่ใช้งานได้ การถอนการติดตั้งและสร้าง node-sass ใหม่หรืออัปเกรดเป็น 5.x ไม่สามารถแก้ปัญหาได้ ขอบคุณ!
Mike

26

สาเหตุเดียวที่ทำให้คุณได้รับข้อผิดพลาดเช่นนั้นเนื่องจากเวอร์ชันโหนดของคุณไม่เข้ากันกับเวอร์ชัน node-sass ของคุณ

ดังนั้นอย่าลืมตรวจสอบเอกสารที่นี่: https://www.npmjs.com/package/node-sass

หรือรูปภาพด้านล่างนี้จะช่วยคุณได้ว่าเวอร์ชันโหนดสามารถใช้เวอร์ชัน node-sass ได้อย่างไร

ใส่คำอธิบายภาพที่นี่

สำหรับตัวอย่างเช่นถ้าคุณกำลังใช้โหนดรุ่น 12ในหน้าต่างของคุณ ( "อาจจะ") แล้วคุณควรจะมีการติดตั้งรุ่นโหนดเขื่อง 4.12

npm install node-sass@4.12

ใช่อย่างนั้น ดังนั้นตอนนี้คุณจะต้องติดตั้งเวอร์ชัน node-sass ที่แนะนำโดยทีม node-sass พร้อมกับโหนดที่ติดตั้งบนคอมพิวเตอร์ของคุณ


ด้วยวิธีนี้คุณจะล็อค v4.x แทนที่จะมีเวอร์ชันล่าสุดของ v4 ตัวอย่างเช่นโหนด 12 จะติด 4.12 แม้ว่าจะรองรับ 4.14 ก็ตาม npm update node-sass จะไม่ทำงานเว้นแต่คุณจะใช้npm install node-sass@^4.12ซึ่งเหมือนกับการติดตั้ง 4.14.1 (เวอร์ชันล่าสุดที่รู้จักของ v4)
Nicolas Hevia

ขอขอบคุณสำหรับการตอบสนองของคุณนิโคลัส Hevia npm install node-sass@4.12แต่ฉันได้รับลองว่ารหัสข้างต้นและคุณขวาก็ไม่สามารถอัปเดตเวอร์ชันของโหนดเขื่องว่าถ้าฉันใช้ แต่ฉันได้ลองใช้ node-sass 4.14.1 ใน nodejs 12.18.3 แล้วและใช้งานไม่ได้ ^นั่นเป็นเหตุผลที่ผมแนะนำให้ใช้รุ่นสิ่งที่ทีมโหนดเขื่องแนะนำและฉันไม่ได้ใช้งาน เพราะจะอัพเดตเป็นเวอร์ชั่นล่าสุดของ node-sass 4
Titus Sutio Fanpula

8

หากคุณใช้ CRA กับyarnตัวจัดการแพ็คเกจเริ่มต้นให้ใช้สิ่งต่อไปนี้ ทำงานให้ฉัน

yarn remove node-sass 
yarn add node-sass@4.14.1

2

มันใช้งานได้สำหรับฉันหลังจากเพิ่มแพ็คเกจ node-sass เวอร์ชันเฉพาะ (node-sass@4.14.1)


1

ข้อผิดพลาดนี้เกิดขึ้นเมื่อเวอร์ชันของ NodeJS และ Node Sass ไม่ตรงกัน

คุณสามารถแก้ไขปัญหาของคุณได้โดยทำดังนี้:

- ขั้นตอนที่ 1 : ลบ Nodejs ออกจากคอมพิวเตอร์ของคุณ

- ขั้นตอนที่ 2 : ติดตั้ง Nodejs เวอร์ชัน 14.15.1 อีกครั้ง

- ขั้นตอนที่ 3 : ถอนการติดตั้ง Node sass โดยรันคำสั่งnpm uninstall node-sass

- ขั้นตอนที่ 4 : ติดตั้ง Node sass เวอร์ชัน 4.14.1 อีกครั้งโดยรันคำสั่งnpm install node-sass@4.14.1

หลังจากขั้นตอนทั้งหมดคุณสามารถเรียกใช้คำสั่งng serve -oเพื่อเรียกใช้แอปพลิเคชันของคุณ

Node sass เวอร์ชัน 5.0.0 เข้ากันไม่ได้กับ ^ 4.0.0


0

หากข้อผิดพลาดคือ

ข้อผิดพลาด: Node Sass เวอร์ชัน 5.0.0 เข้ากันไม่ได้กับ ^ 4.0.0

ขั้นตอนที่ 1: หยุดเซิร์ฟเวอร์

ขั้นตอนที่ 2: รันคำสั่งคือ npm uninstall node-sass

ขั้นตอนที่ 3: ตรวจสอบ node-sass package.jsonว่า node-sass มีอยู่ในไฟล์หรือไม่จากนั้นให้รัน Step2 อีกครั้ง

ขั้นตอนที่ 4: npm install node-sass@4.14.1<=== เรียกใช้คำสั่ง

ขั้นตอนที่ 5: รอจนกว่าคำสั่งจะทำงานสำเร็จ

ขั้นตอนที่ 6: เริ่มเซิร์ฟเวอร์โดยใช้ npm start

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.