วิธีแก้ไขข้อผิดพลาด “ไม่พบโมดูล” โดยใช้ Node.js

Withi Kaekhi Khx Phid Phlad Mi Phb Modul Doy Chi Node Js



เช่นเดียวกับภาษาการเขียนโปรแกรมอื่นๆ Node.js ไม่จำเป็นต้องแบ่งซอร์สโค้ดของแอปพลิเคชันออกเป็นชิ้นเล็กๆ โดยจะเขียนซอร์สโค้ดทั้งหมดลงในไฟล์ “.js” และล่ามก็ไม่ทำให้เกิดปัญหาใดๆ อย่างไรก็ตาม ในขณะที่สร้างแอปพลิเคชัน Node.js ที่ซับซ้อนมาก ขอแนะนำให้แบ่งซอร์สโค้ดออกเป็นโมดูลเล็กๆ แล้วรวมเข้าด้วยกันเป็นแอปพลิเคชันที่เชื่อมโยงกัน

โครงร่างด่วน

โมดูลใน Node.js คืออะไร?

ใน Node.js “ โมดูล ” สอดคล้องกับไลบรารีที่สร้างการเชื่อมต่อกับแอปพลิเคชันตามบริบท ช่วยให้นักพัฒนาสามารถนำโค้ดที่ห่อหุ้มกลับมาใช้ใหม่ได้ทุกเมื่อที่จำเป็น แบ่งออกเป็นสามประเภทหลัก: โมดูล 'ในตัว', 'ท้องถิ่น' และ 'บุคคลที่สาม' โมดูลเหล่านี้ยังมีวิธีการและคุณสมบัติที่หลากหลายซึ่งดำเนินการตามที่ระบุตามฟังก์ชันการทำงาน







วิธีแก้ไขข้อผิดพลาด “ไม่พบโมดูล” โดยใช้ Node.js

ส่วนนี้รวบรวมสาเหตุที่เป็นไปได้ทั้งหมดที่ทำให้เกิดข้อผิดพลาด “ไม่พบโมดูล” และยังให้แนวทางแก้ไขที่สามารถใช้งานได้เพื่อแก้ไข:



เหตุผลที่ 1: ไม่ได้ติดตั้งโมดูลที่จำเป็น

สาเหตุที่พบบ่อยที่สุดสำหรับ “ ไม่พบโมดูล ” ข้อผิดพลาดคือสิ่งที่จำเป็น “ ไม่ได้ติดตั้งโมดูลของบริษัทอื่น ” ในโครงการ Node.js ปัจจุบัน สมมติว่าเรานำเข้าโมดูล “mysql” ของบริษัทอื่นในแอปพลิเคชัน Node.js ในลักษณะนี้:



ค่าคงที่ mysql = จำเป็นต้อง ( 'มายเอสคิวแอล' ) ;

ในคำสั่งข้างต้น “ จำเป็นต้อง() ” วิธีการรวมโมดูล “mysql” เข้ากับแอปพลิเคชัน node.js ปัจจุบัน





ดำเนินการไฟล์ “.js”:

ดัชนีโหนด เจส

ผลลัพธ์ด้านล่างสร้างข้อผิดพลาดที่กล่าวถึงเนื่องจากไม่ได้ติดตั้งโมดูล “mysql” ในโครงการ Node.js ปัจจุบัน:



วิธีแก้ไข: ติดตั้งโมดูลที่จำเป็น

วิธีแก้ไขข้อผิดพลาดที่กล่าวถึงข้างต้นคือการติดตั้งโมดูลที่จำเป็นอย่างถูกต้องด้วยความช่วยเหลือของ ' เวลา 22.00 น / เส้นด้าย ” ผู้จัดการแพ็คเกจ สำหรับสถานการณ์นี้ มีการติดตั้งโมดูล “mysql” ที่จำเป็นด้วยคำสั่งการติดตั้ง “npm”:

npm ติดตั้ง mysql

ผลลัพธ์แสดงการติดตั้งโมดูล “mysql” ในโครงการ Node.js ปัจจุบันสำเร็จ:

ตอนนี้รันไฟล์ '.js' อีกครั้ง:

ดัชนีโหนด เจส

สามารถวิเคราะห์ได้ว่าคำสั่งข้างต้นดำเนินการได้สำเร็จโดยไม่สร้างข้อผิดพลาด 'ไม่พบโมดูล':

เหตุผลที่ 2: เส้นทางโมดูลไม่ถูกต้อง

อีกเหตุผลหนึ่งสำหรับ “ ไม่พบโมดูล ” ข้อผิดพลาดคือ “ เส้นทางโมดูลไม่ถูกต้อง '. มันมักจะเกิดขึ้นเมื่อผู้ใช้นำเข้าโมดูลภายในเครื่องผ่านเส้นทางสัมพัทธ์ สมมติว่าผู้ใช้สร้างโมดูลที่กำหนดเองลงในโฟลเดอร์เฉพาะและนำเข้าโมดูลดังกล่าวลงในแอปพลิเคชัน Node.js ก่อนที่จะดำเนินการนี้ ตรวจสอบให้แน่ใจว่าเส้นทางที่ระบุนั้นถูกต้อง มิฉะนั้นจะพบข้อผิดพลาดที่กล่าวถึง

ตัวอย่างเช่น โมดูลภายในเครื่อง/ที่ผู้ใช้กำหนดชื่อ “ โมดูลของฉัน ” มีอยู่ในโฟลเดอร์ “./custom-modules”:

ผู้ใช้นำเข้า 'myModule' ที่ไฮไลต์ไว้ข้างต้นลงในแอปพลิเคชัน Node.js ปัจจุบันผ่านเส้นทางสัมพัทธ์:

ค่าคงที่ ภาษา = จำเป็นต้อง ( './myModule' ) ;

เรียกใช้ไฟล์ '.js':

ดัชนีโหนด เจส

จะเห็นได้ว่าเนื่องจากเส้นทางที่ไม่ถูกต้องของ 'myModule' จึงเกิดข้อผิดพลาด 'ไม่พบโมดูล':

วิธีแก้ไข: ระบุเส้นทางโมดูลที่ถูกต้อง

วิธีแก้ไขข้อผิดพลาดที่กล่าวถึงข้างต้นคือการระบุเส้นทางที่ถูกต้องหรือแน่นอนของโมดูลที่โมดูลนั้นตั้งอยู่ ที่นี่ เราได้ส่งผ่านเส้นทางที่ถูกต้อง 'myModule' เพื่อแก้ไขข้อผิดพลาด 'ไม่พบโมดูล':

ค่าคงที่ ภาษา = จำเป็นต้อง ( './โมดูลที่กำหนดเอง/myModule' ) ;

เริ่มต้นไฟล์ “.js”:

ดัชนีโหนด เจส

สังเกตได้ว่าเอาต์พุตด้านล่างไม่แสดงข้อผิดพลาดที่พบ เนื่องจากเส้นทางที่ระบุของโมดูลที่นำเข้าได้รับการแก้ไขแล้ว:

เหตุผลที่ 3: ชื่อโมดูลไม่ถูกต้อง (คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่)

โมดูลคือ “ กรณีที่สำคัญ ” ใน Linux และ macOS เช่น หากชื่อโมดูลถูกติดตั้งเป็นตัวพิมพ์ใหญ่และผู้ใช้นำเข้าเป็นตัวพิมพ์เล็ก จากนั้น “ ไม่พบโมดูล ” ข้อผิดพลาดจะถูกสร้างขึ้น นี่เป็นเนื่องจากมีไม่ตรงกันระหว่างชื่อโมดูลจริงและคำสั่งนำเข้า

ที่นี่ โมดูล “csvtojson” ที่ติดตั้งจะถูกนำเข้าในรูปแบบ “ตัวพิมพ์ใหญ่” ลงในแอปพลิเคชัน Node.js:

ค่าคงที่ ซีเอสวีทอจสัน = จำเป็นต้อง ( 'ซีเอสวีทอจสัน' ) ;

ดำเนินการไฟล์ “.js”:

ดัชนีโหนด เจส

ผลลัพธ์สร้างข้อผิดพลาด 'ไม่พบโมดูล' เนื่องจากชื่อโมดูลไม่ถูกต้อง:

วิธีแก้ไข: พิมพ์ชื่อโมดูลที่ถูกต้อง

วิธีแก้ไขข้อผิดพลาดข้างต้นคือการระบุตัวพิมพ์ที่ถูกต้อง (ล่างหรือบน) ของโมดูลที่นำเข้าในขณะที่ใช้ ' จำเป็นต้อง() ' วิธี. ในสถานการณ์สมมตินี้ โมดูล 'csvtojson' ถูกระบุในวิธีการ 'require()' ในกรณีที่ถูกต้อง:

ค่าคงที่ ซีเอสวีทอจสัน = จำเป็นต้อง ( 'ซีเอสวีทอจสัน' ) ;

เรียกใช้ไฟล์ '.js' อีกครั้ง:

ดัชนีโหนด เจส

ตอนนี้คำสั่งข้างต้นไม่ได้สร้างข้อผิดพลาด “ไม่พบโมดูล” เนื่องจากกรณีของแพ็คเกจที่นำเข้าเหมือนกับชื่อจริง:

เหตุผลที่ 4: นามสกุลไฟล์ไม่ถูกต้อง

ไม่พบโมดูล ” ข้อผิดพลาดยังสามารถเกิดขึ้นได้เนื่องจาก “ นามสกุลไฟล์ไม่ถูกต้อง '. คล้ายกับเส้นทางของไฟล์ที่ไม่ถูกต้อง ซึ่งเกิดขึ้นในกรณีของโมดูลในเครื่อง ตัวอย่างเช่น โมดูลในเครื่องจะถูกสร้างขึ้นในไฟล์ “.json” และระบุไว้ในแอปพลิเคชัน Node.js พร้อมด้วยนามสกุล “.js” จากนั้นข้อผิดพลาดเฉพาะข้างต้นจะถูกสร้างขึ้น:

ในสถานการณ์สมมตินี้ “ myModule.js ” ที่แสดงในเหตุผล “ เส้นทางโมดูลไม่ถูกต้อง” ถือเป็นไฟล์ตัวอย่าง มีการเข้าถึงในแอปพลิเคชัน Node.js ปัจจุบันโดยระบุส่วนขยาย “.json” ดังนี้:

ค่าคงที่ ภาษา = จำเป็นต้อง ( './custom-modules/myModule.json' ) ;

ดำเนินการไฟล์ “.js”:

ดัชนีโหนด เจส

ผลลัพธ์สร้างข้อผิดพลาด 'ไม่พบโมดูล' เนื่องจากนามสกุลไฟล์ไม่ถูกต้องของไฟล์ 'myModule':

วิธีแก้ไข: พิมพ์นามสกุลไฟล์ที่ถูกต้อง

วิธีแก้ไขข้อผิดพลาดที่กล่าวถึงคือการพิมพ์นามสกุลไฟล์ที่ถูกต้องซึ่งสร้างโมดูลในเครื่อง ตัวอย่างเช่น เราได้ระบุนามสกุลไฟล์ที่ถูกต้องของไฟล์ “myModule.js” เพื่อแก้ไขข้อผิดพลาด “ไม่พบโมดูล”:

ค่าคงที่ ภาษา = จำเป็นต้อง ( './custom-modules/myModule.js' ) ;

เรียกใช้ไฟล์ '.js':

ดัชนีโหนด เจส

ขณะนี้คำสั่งดังกล่าวได้รับการดำเนินการเรียบร้อยแล้วโดยไม่แสดงข้อผิดพลาด 'ไม่พบโมดูล':

เหตุผลที่ 5: การติดตั้งโมดูลทั่วโลก

โมดูลโหนดสามารถติดตั้งในเครื่อง (สำหรับโครงการเฉพาะ) หรือทั่วโลก (สำหรับทุกโครงการ) ในลินุกซ์ , หากโมดูลที่ต้องการได้รับการติดตั้งแบบโกลบอลในระบบปฏิบัติการและเข้าถึงได้ในโครงการเฉพาะโดยไม่ต้องติดตั้งในเครื่อง ดังนั้น “ ไม่พบโมดูล ” เกิดข้อผิดพลาด

ตัวอย่างเช่น “ mongodb ” โมดูลได้รับการติดตั้งทั่วโลกในระบบปฏิบัติการ Linux ผ่านทาง “ sudo npm ติดตั้ง -g mongodb ” และเข้าถึงได้ภายในเครื่องในโปรเจ็กต์โหนดเฉพาะ:

ค่าคงที่ mongodb = จำเป็นต้อง ( 'มอนก็อด' )

เรียกใช้ไฟล์ '.js':

ดัชนีโหนด เจส

ผลลัพธ์สร้างข้อผิดพลาดที่กล่าวถึงเนื่องจากไม่ได้ติดตั้ง 'mongodb' ในเครื่องในโครงการโหนดปัจจุบัน:

วิธีแก้ไข: ติดตั้งโมดูลภายในเครื่อง

วิธีแก้ไขข้อผิดพลาดที่พบคือการติดตั้งโมดูลในเครื่องสำหรับโปรเจ็กต์ Node.js เฉพาะบนระบบปฏิบัติการ Linux

ที่นี่ “ mongodb โมดูล ” ได้รับการติดตั้งภายในโปรเจ็กต์ปัจจุบันโดยใช้คำสั่งการติดตั้ง “npm”:

npm ติดตั้ง mongodb

เมื่อการติดตั้ง “mongodb” ในเครื่องเสร็จสิ้น ให้นำเข้าไฟล์ดังกล่าวลงในไฟล์ “.js” และดำเนินการ:

ดัชนีโหนด เจส

จะเห็นได้ว่าข้อผิดพลาด “ไม่พบโมดูล” ได้รับการแก้ไขโดยการติดตั้งโมดูล “mongodb” ในเครื่องสำหรับโครงการ Node.js ปัจจุบัน:

ในวินโดวส์ การติดตั้งโมดูลส่วนกลางและภายในเครื่องไม่สร้างข้อผิดพลาด 'ไม่พบโมดูล'

เหตุผลที่ 6: ไฟล์รายการหายไป

ไม่พบโมดูล ” ข้อผิดพลาดยังสามารถเกิดขึ้นได้เนื่องจากไม่มีไฟล์รายการหลักใน “package.json” ของโมดูล ไฟล์รายการหลักของแต่ละโมดูลคือไฟล์ 'index.js' ตามค่าเริ่มต้น

สมมติว่า หากผู้ใช้ลบออกโดยไม่ได้ตั้งใจ ก็จะเกิดข้อผิดพลาดข้างต้นขึ้น เนื่องจากในขณะที่นำเข้าโมดูลที่ระบุ “ จำเป็นต้อง() ” วิธีการนำทางไปยังโฟลเดอร์ของโมดูลนั้นและค้นหาจุดเริ่มต้น หากไม่มีอยู่ก็จะไม่สามารถนำเข้าโมดูลนั้นไปยังแอปพลิเคชัน Node.js

ไฟล์รายการ “index.js” ของโมดูลที่ต้องการมีอยู่ในโครงสร้างโฟลเดอร์ ตัวอย่างด้านล่างแสดงไฟล์รายการของโมดูล “mysql”:

ตอนนี้ไฟล์ 'index.js' ที่ไฮไลต์ด้านบนจะถูกลบออกจากโฟลเดอร์ 'mysql' จากนั้นนำเข้าโมดูล 'mysql' ลงในแอปพลิเคชัน Node.js:

ค่าคงที่ mysql = จำเป็นต้อง ( 'มายเอสคิวแอล' )

ดำเนินการไฟล์ “.js”:

ดัชนีโหนด เจส

ที่นี่เอาต์พุตสร้างข้อผิดพลาด “ไม่พบโมดูล” เนื่องจากไม่มีไฟล์รายการของโมดูล “mysql”:

วิธีแก้ไข: ติดตั้งโมดูลที่จำเป็นอีกครั้ง

วิธีแก้ไขข้อผิดพลาดที่พบข้างต้นคือการลบ ' node_modules ” และติดตั้งโมดูลที่ต้องการอีกครั้ง ที่นี่โมดูล “mysql” จะถูกติดตั้งอีกครั้งหลังจากลบไดเร็กทอรี “node_modules”:

npm ติดตั้ง mysql

หลังจากติดตั้ง “mysql” สำเร็จ ระบบใหม่ “ node_modules ” ไดเร็กทอรีถูกสร้างขึ้นโดยอัตโนมัติซึ่งมีโครงสร้างโฟลเดอร์ของโมดูล “mysql” ซึ่งมี “index.js” อยู่:

ตอนนี้ให้เรียกใช้ไฟล์ '.js' อีกครั้ง:

ดัชนีโหนด เจส

ที่นี่เอาต์พุตไม่สร้างข้อผิดพลาด 'ไม่พบโมดูล' เนื่องจากมีไฟล์รายการชื่อ 'index.js' ของโมดูล 'mysql':

จะทำอย่างไรถ้าข้อผิดพลาด “ไม่พบโมดูล” ยังคงอยู่?

หาก “ ไม่พบโมดูล ” ข้อผิดพลาดยังคงมีอยู่หลังจากแก้ไขด้วยวิธีแก้ไขปัญหาข้างต้นแล้วลบ “ node_modules ” โฟลเดอร์ โฟลเดอร์ “node_modules” สร้างขึ้นโดยอัตโนมัติเมื่อมีการติดตั้งโมดูลของบุคคลที่สาม ประกอบด้วยแพ็คเกจของบุคคลที่สามทั้งหมดที่ต้องใช้โปรเจ็กต์ Node.js

นอกจากนี้ “ แพคเกจ lock.json ” ไฟล์ยังสร้างขึ้นโดยอัตโนมัติเมื่อมีการติดตั้งแพ็คเกจด้วย “npm” จะเก็บบันทึกการขึ้นต่อกันและการขึ้นต่อกันย่อยที่แพ็คเกจขึ้นอยู่กับเวอร์ชัน หากแพ็คเกจถูกติดตั้งด้วย “yarn” ดังนั้นชื่อไฟล์นี้คือ “ เส้นด้าย.ล็อค '.

วิธีแก้ไข: ลบโฟลเดอร์ 'node_modules' และไฟล์ 'package-lock.json'

วิธีแก้ไขข้อผิดพลาดที่พบคือการลบโฟลเดอร์ 'node_modules' และไฟล์ 'package-lock.json/yarn.lock' และติดตั้งแพ็คเกจที่ต้องการอีกครั้ง

ในลินุกซ์ , โฟลเดอร์และไฟล์ที่ระบุข้างต้นสามารถลบได้โดยใช้คำสั่งด้านล่าง “ RM (ลบ)” คำสั่ง:

RM - - แพ็คเกจ rf node_modules - - ล็อค. json.json //ลบโฟลเดอร์และไฟล์

LS // แสดงไฟล์และไดเร็กทอรี

ในคำสั่งข้างต้น “ -ร ” ตั้งค่าสถานะลบโฟลเดอร์ที่ระบุ “ ซ้ำ ๆ ” รวมถึงไดเรกทอรีย่อยทั้งหมดและ “ ” ธงบอกล่ามให้ทำงานนี้ “ เฉียบพลัน ”:

ผลลัพธ์แสดงให้เห็นว่าโฟลเดอร์ “node_modules” และไฟล์ “package-lock.json/yarn.lock” ได้ถูกลบออกจากโครงการ Node.js ปัจจุบันอย่างสมบูรณ์:

ในวินโดวส์ ผู้ใช้สามารถลบโฟลเดอร์ “node_modules” และไฟล์ “package-lock.json/yarn.lock” ได้เพียงแค่กดปุ่ม “ ลบ ” หรือใช้ตัวเลือก “ลบ” จากเมนูแบบเลื่อนลง

นั่นคือทั้งหมดที่เกี่ยวกับการแก้ไขข้อผิดพลาด “ไม่พบโมดูล” ใน Node.js

บทสรุป

เพื่อแก้ไขปัญหา “ ไม่พบโมดูล ” ข้อผิดพลาด “ติดตั้งโมดูลที่ต้องการ” “ระบุเส้นทางที่ถูกต้อง” “พิมพ์ตัวพิมพ์ที่ถูกต้องในวิธี “require()” และ “พิมพ์นามสกุลไฟล์ที่ถูกต้อง” นอกจากนี้ยังสามารถแก้ไขได้ด้วยการ 'ติดตั้งโมดูลในเครื่อง' ในโครงการ Node.js หากข้อผิดพลาดยังคงอยู่ ให้ลบโฟลเดอร์ “node_modules” ไฟล์ “package-lock.json” ออก จากนั้นติดตั้งโมดูลที่จำเป็นอีกครั้งผ่าน “npm/yarn” โพสต์นี้ได้กล่าวถึงสาเหตุที่เป็นไปได้ทั้งหมดพร้อมกับวิธีแก้ปัญหาเพื่อแก้ไขข้อผิดพลาด “ไม่พบโมดูล” โดยใช้ Node.js