ความเข้ากันได้แบบย้อนหลังในแพ็คเกจ NPM ยอดนิยมทำให้เกิดการหยุดทำงานในโครงการต่างๆ

พื้นที่เก็บข้อมูล NPM กำลังประสบปัญหาการหยุดทำงานครั้งใหญ่ของโครงการเนื่องจากปัญหาในเวอร์ชันใหม่ของการขึ้นต่อกันที่ได้รับความนิยม สาเหตุของปัญหาคือแพ็คเกจ mini-css-extract-plugin 2.5.0 รุ่นใหม่ที่ออกแบบมาเพื่อแยก CSS ออกเป็นไฟล์แยกกัน แพ็คเกจนี้มีการดาวน์โหลดมากกว่า 10 ล้านครั้งต่อสัปดาห์ และถูกใช้เป็นการพึ่งพาโดยตรงกับโปรเจ็กต์มากกว่า 7 โปรเจ็กต์

ในเวอร์ชันใหม่ มีการเปลี่ยนแปลงที่ละเมิดความเข้ากันได้แบบย้อนหลังเมื่อนำเข้าไลบรารี และทำให้เกิดข้อผิดพลาดเมื่อพยายามใช้เวอร์ชันที่ถูกต้องก่อนหน้านี้และอธิบายไว้ในโครงสร้างเอกสาร “const MiniCssExtractPlugin = need('mini-css-extract-plugin') ” ซึ่งเมื่อเปลี่ยนไปใช้เวอร์ชันใหม่จำเป็นต้องแทนที่ด้วย “const MiniCssExtractPlugin = need(“mini-css-extract-plugin”).default”

ปัญหาเกิดขึ้นในโปรเจ็กต์ที่ไม่ได้ผูกกับหมายเลขเวอร์ชันอย่างชัดเจนเมื่อรวมการขึ้นต่อกันด้วย วิธีแก้ปัญหา ขอแนะนำให้แก้ไขลิงก์ไปยังเวอร์ชันก่อนหน้า 2.4.5 โดยเพิ่ม '"overrides": {"mini-css-extract-plugin": "2.4.5"}' ใน Yarn หรือใช้คำสั่ง " npm i -D" --บันทึก-แน่นอน [ป้องกันอีเมล]" ใน นพ.

ในบรรดาผู้ที่ตกเป็นเหยื่อคือผู้ใช้แพ็คเกจ create-react-app ที่พัฒนาโดย Facebook ซึ่งเชื่อมต่อ mini-css-extract-plugin เป็นการพึ่งพา เนื่องจากขาดการเชื่อมโยงกับหมายเลขเวอร์ชัน mini-css-extract-plugin ความพยายามในการเปิด create-react-app จึงสิ้นสุดลงด้วยข้อผิดพลาด “TypeError: MiniCssExtractPlugin ไม่ใช่ตัวสร้าง” ปัญหายังส่งผลต่อแพ็คเกจ @wordpress/scripts, @auth0/auth0-spa-js, sql-formatter-gui, LedgerSMB, vip-go-mu-plugins, cybros, vue-cli, chore ฯลฯ

ที่มา: opennet.ru

เพิ่มความคิดเห็น