เรื่องวุ่นวานของการใช้ npm i --legacy-peer-deps
JavascriptInstall
อัพเดทล่าสุด 15 ต.ค. 66
คำสั่ง install package ของ js
กรณีที่เจอ

ปกติถ้าเราใช้ package ที่มันขัดแข้งขัดขากัน โดยเฉพาะ react 18 แล้วดันใช้ package ที่ไม่ได้อัพเดท แล้วสั่ง npm i เราก็จะเจอ error ประมาณนี้

npm ERR! Conflicting peer dependency: [email protected]
npm ERR! node_modules/react
npm ERR!   peer react@"^17.0.1" from @toast-ui/[email protected]
npm ERR!   node_modules/@toast-ui/react-editor
npm ERR!     @toast-ui/react-editor@"3.2.0" from the root project

ซึ่งจริงๆ เราแก้ได้ง่ายๆ ด้วยการสั่ง ยาวขึ้นเป็น

npm i --legacy-peer-deps

ก็ใช้ได้แล้วครับ

แต่ประเด็นคือ ขี้เกียจไง เพราะ มันต้องพิมพ์ยาวขึ้น แล้วก็พวก IDE ทั่วไป คลิ้ก install มันเติมไอ้ของแบบนี้เข้าไปไม่ได้

ดังนั้น ก็มีวิธีแก้เพิ่มด้วยการทำแบบนี้ครับ

  • สร้างไฟล์ชื่อ .npmrc (มีจุดข้างหน้านะครับ)
  • เติมการตั้งค่าไปบรรทัดนึง ว่า legacy-peer-deps=true 
  • แค่นี้ครับ

เท่านี้ เราก็สั่งด้วย npm i ธรรมดา หรือใช้พวก not key ในการ update/install package ได้แล้วครับ

แถมอีกนิด คือ ไอ้พวก CI/CD บางที่มันก็จะไปติด legacy-peer-deps นี้ด้วยเหมือนกัน ดังนั้นการตั้งค่าด้วยไฟล์ .npmrc เลยกลายเป็นเรื่องสำคัญมาก เพราะไม่งั้นก็จะ build ไม่ได้เลย

Beta Version v23.12.4 : ขออภัยเว็บกำลังก่อสร้าง (อีกแล้ว) แต่คราวนี้กำลังสร้างจริงจังละ