Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> การบำรุงรักษาคอมพิวเตอร์

แก้ไขข้อผิดพลาด Node‑Gyp Rebuild ล้มเหลวบน macOS: คู่มือทีละขั้นตอน

node-gyp เป็นเครื่องมือที่น่าสนใจซึ่งช่วยให้นักพัฒนาสามารถคอมไพล์โมดูล Node add-on แบบเนทีฟบนแพลตฟอร์มต่างๆ ได้ ปัจจุบันมีความนิยมและใช้กันอย่างแพร่หลาย จึงมักถูกรวมเป็น dependency สำหรับแพ็กเกจ NPM ส่วนใหญ่

บนระบบปฏิบัติการส่วนใหญ่ node-gyp ไม่ได้ก่อให้เกิดปัญหา การติดตั้ง node-gyp และแพ็กเกจ NPM อื่นๆ มักดำเนินการได้อย่างราบรื่นและมีประสิทธิภาพ อย่างไรก็ตาม สถานการณ์ไม่ได้เป็นเช่นนี้สำหรับทุกคน บางนักพัฒนารายงานว่ามีปัญหาในการ rebuild node-gyp บน macOS ทำให้ประสบการณ์การพัฒนาไม่ค่อยดีนัก ข้อผิดพลาดนี้ยังนำไปสู่หลายกับดักและทำให้หลายอย่างผิดพลาดได้

ปัญหานี้ไม่ใช่เรื่องใหม่ นักพัฒนาที่ใช้ macOS เวอร์ชันเก่าเคยพบข้อผิดพลาดนี้มาก่อน ด้วยการปล่อย macOS Catalina นักพัฒนาหลายคนรายงานว่าพบ node-gyp rebuild fails บน Mac หลังอัปเกรดไปสู่ macOS เวอร์ชันใหม่ ข้อผิดพลาดนี้ป้องกันไม่ให้นักพัฒนาติดตั้งแพ็กเกจ node-gyp ที่จำเป็น

หากคุณเคยพบข้อผิดพลาดนี้ คุณจะเข้าใจว่าการที่ node-gyp rebuild ล้มเหลวบน Mac น่าหงุดหงิดแค่ไหน คุณไม่สามารถดำเนินต่อไปกับการพัฒนาแอพหรือซอฟต์แวร์ได้ จนกว่าจะแก้ไขข้อผิดพลาดนี้ สบายใจได้ว่าเราทำงานหนักให้คุณแล้ว หากคุณพบว่ายากที่จะดำเนินต่อไปกับโปรเจกต์เนื่องจากข้อผิดพลาดนี้ คุณสามารถลองวิธีแก้ไขที่ระบุด้านล่างเพื่อแก้ปัญหาได้

เคล็ดลับ: สแกน Mac เพื่อตรวจสอบปัญหาประสิทธิภาพ ไฟล์ขยะ แอพมี害 และภัยคุกคามด้านความปลอดภัย
ที่อาจก่อให้เกิดปัญหาระบบหรือทำให้ประสิทธิภาพช้าลง

Node-Gyp คืออะไร?

node-gyp เป็นเครื่องมือที่ใช้คอมไพล์ Node.js Addons ซึ่งเป็นโมดูล Node.js แบบเนทีฟที่เขียนด้วย C หรือ C++ โมดูลเหล่านี้ต้องคอมไพล์บนเครื่องของคุณโดยใช้เครื่องมืออย่าง node-gyp Node-gyp ทำงานบน Windows, macOS และ Linux

Node-gyp ใช้งานง่ายโดยทั่วไปเนื่องจากอินเทอร์เฟซที่สม่ำเสมอ คุณยังสามารถใช้คำสั่งเดียวกันในการสร้างหรือ rebuild โมดูลบนแพลตฟอร์มต่างๆ ได้ Node-gyp ยังรองรับหลายเวอร์ชันเป้าหมายของ Node

หากคุณได้รับ npm gyp error บน Mojave หรือ macOS เวอร์ชันก่อนหน้า คุณต้องตรวจสอบข้อกำหนดสำหรับ node-gyp ให้ดี

นี่คือข้อกำหนดที่ต้องติดตั้งเพื่อให้ node-gyp ทำงานบน macOS:

  • Python v2.7, v3.5, v3.6, หรือ v3.7
  • Xcode – ยูทิลิตี้ที่ช่วยให้นักพัฒนาสร้างแอพบน macOS, iOS และ iPadOS

คุณยังต้องติดตั้ง Xcode Command Line Tools เวอร์ชันที่ถูกต้อง ซึ่งเป็นส่วนหนึ่งของชุดเครื่องมือและไลบรารีการพัฒนาซอฟต์แวร์ของ Xcode

วิธีติดตั้ง Xcode Command Line Tools:

  1. เปิด Xcode บน Mac
  2. เลือก Preferences จากเมนู Xcode
  3. ภายใต้แผง General คลิก Downloads
  4. เมื่อหน้าต่าง Downloads เปิด ให้คลิกแท็บ Components
  5. คลิกปุ่ม Install ถัดจาก Command Line Tools
  6. ล็อกอินด้วยบัญชี Apple Developer เพื่อติดตั้งเสร็จสิ้น

หากคุณใช้ macOS Catalina คุณสามารถดาวน์โหลด Command Line Tools for Xcode เวอร์ชันที่เหมาะสมสำหรับ Catalina ของคุณได้ที่นี่ สำหรับ macOS 10.15.3 ชื่อไฟล์ควรเป็น Command_Line_Tools_for_Xcode_11.3.1.dmg เมื่อคุณติดตั้งคอมโพเนนต์ที่ถูกต้องแล้ว คุณควรจะสามารถสร้างด้วย node-gyp ได้สำเร็จ หากยังได้ node-gyp rebuild failing บน Mac ให้ตรวจสอบคอมโพเนนต์เหล่านี้เพื่อหาสาเหตุ

วิธีแก้ไขข้อผิดพลาด Node-gyp Rebuild

การติดตั้ง node module เป็นกระบวนการง่าย คุณเพียงต้องรันคำสั่งเฉพาะและควรพร้อมใช้งาน หากคุณพบ node-gyp rebuild Fails บน Mac คุณต้องย้อนกลับเพื่อหาสาเหตุ

แต่ก่อน ลองขั้นตอนตรวจสอบพื้นฐานเหล่านี้ก่อน:

  1. รีสตาร์ทคอมพิวเตอร์เพื่อกำจัดบั๊กชั่วคราวที่อาจส่งผลต่อระบบ
  2. ปิดแอพที่ไม่จำเป็นทั้งหมดเพื่อปล่อยทรัพยากรคอมพิวเตอร์
  3. ปิดใช้งานซอฟต์แวร์ความปลอดภัยชั่วคราว เช่น โปรแกรมแอนตี้ไวรัสหรือแอนตี้มัลแวร์
  4. ทำความสะอาดระบบด้วย แอพซ่อมแซม Mac

หากยังได้ข้อผิดพลาด node-gyp rebuilding ให้ดูวิธีแก้ไขด้านล่างและดูว่าอันไหนใช้ได้กับคุณ

แก้ #1: ตรวจสอบคอมโพเนนต์ที่จำเป็นอีกครั้ง

สิ่งแรกที่ต้องทำเมื่อได้ npm gyp error บน Mojave หรือ macOS เวอร์ชันอื่น คือตรวจสอบข้อกำหนดการติดตั้ง node-gyp อีกครั้ง ตามที่กล่าวไว้ข้างต้น คุณต้องมี 3 คอมโพเนนต์:

  • Python
  • Xcode
  • Xcode Command Line Tools

อย่าลืมติดตั้งภาษา C และ C++ ซึ่งจำเป็นสำหรับการคอมไพล์โมดูล หากขาดหรือทำงานไม่ได้ คุณจะได้ rebuild fail error แน่นอน การติดตั้งใหม่คอมโพเนนต์ที่ขาดหายหรือเสียหายควรช่วยแก้ปัญหาได้

แก้ #2: อัปเดตคอมโพเนนต์ Node-Gyp

บางครั้งการติดตั้งคอมโพเนนต์เหล่านี้ยังไม่เพียงพอ คุณต้องแน่ใจว่าใช้เวอร์ชันที่ถูกต้องสำหรับ macOS ของคุณ สามารถเลือก Python v2.7, v3.5, v3.6, หรือ v3.7 ได้ ขึ้นอยู่กับว่าอันไหนใช้ได้ สำหรับ Xcode สามารถดาวน์โหลดจากลิงก์นี้ คุณยังต้องติดตั้ง node-gyp เวอร์ชันล่าสุดด้วย

แก้ #3: ทดสอบ Acid Test

คุณสามารถตรวจสอบว่า Xcode Command Line Tools บนคอมพิวเตอร์ติดตั้งถูกต้องและทำงานกับ node-gyp ได้หรือไม่ โดยรัน acid test ด้วยขั้นตอน:

  1. บน Xcode รันคำสั่ง:
    /usr/sbin/pkgutil –packages | grep CL
  2. หากเห็น com.apple.pkg.CLTools_Executables แสดงว่าไม่มีปัญหา หากไม่มี แสดงว่าทดสอบล้มเหลว ต้องติดตั้งใหม่
  3. รันคำสั่งถัดไป:
    /usr/sbin/pkgutil –pkg-info com.apple.pkg.CLTools_Executables
  4. ควรเห็น version: 11.0.0 (หรือใหม่กว่า) หากไม่ใช่ แสดงว่าทดสอบล้มเหลว ต้องติดตั้งใหม่

แก้ #4: เปลี่ยนเวอร์ชัน Python

นักพัฒนาที่ได้รับผลกระทบหลายคนระบุว่าการเปลี่ยนเวอร์ชัน Python ที่ใช้สำหรับสภาพแวดล้อมที่ใช้งานอยู่ ช่วยแก้ปัญหาได้ นี่เกี่ยวข้องกับความเข้ากันระหว่าง macOS, Node และ Python ที่คุณใช้ บางคนพบว่า Python เวอร์ชันเก่า เช่น v2.7 มีความเสถียรมากกว่าเวอร์ชันใหม่ ลองทดสอบเวอร์ชันต่างๆ ดูว่าอันไหนใช้ได้

สรุป

การได้ node-gyp rebuild fails บน Mac อาจเป็นเรื่องน่าปวดหัวและการหาสาเหตุอาจเสียเวลามาก ดังนั้นหากพบข้อผิดพลาดนี้ ให้อ้างอิงคู่มือข้างต้นเพื่อทราบว่าต้องทำอะไรเพื่อแก้ไข