วิธีแก้ไขข้อผิดพลาด 'referenceerror need is not specified'

Withi Kaekhi Khx Phid Phlad Referenceerror Need Is Not Specified



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

คู่มือนี้จะอธิบายขั้นตอนในการแก้ไขข้อผิดพลาด “ReferenceError: need is not specified”

วิธีแก้ไขข้อผิดพลาด 'ReferenceError: ไม่ได้กำหนดความต้องการ'

ในการนำเข้าโมดูลภายนอกหรือโมดูลในตัวในโครงการมีการใช้สองวิธี ซึ่งใช้ ' จำเป็นต้อง() ” วิธีการ หรือ “ นำเข้า ' คำสำคัญ. ที่กล่าวถึง” ReferenceError: ไม่ได้กำหนดความต้องการ ” เกิดขึ้นเมื่อผู้ใช้พยายามใช้ “ จำเป็นต้อง() ” วิธีการภายใน “ โมดูลอีเอส ” ขอบเขต ข้อผิดพลาดที่กล่าวถึงจะปรากฏเช่นนี้บนคอนโซลใน node.js เมื่อโค้ดที่ระบุด้านล่างถูกเรียกใช้งาน:









สาเหตุของการเกิดข้อผิดพลาด “แก้ไขข้อผิดพลาดอ้างอิง: ไม่ได้กำหนดความต้องการ” และวิธีแก้ไขปัญหาที่เกี่ยวข้องได้อธิบายไว้ในส่วนด้านล่าง



เหตุผลที่ 1: ประเภทของแอปพลิเคชันถูกตั้งค่าเป็นโมดูล

หากแอปพลิเคชันของคุณแสดงข้อผิดพลาดดังกล่าว วิธีแก้ปัญหาที่ง่ายที่สุดและยาวนานคือการแก้ไข “ แพ็คเกจ.json ' ไฟล์. ค้นหาคู่คีย์/ค่าที่มี “ สำคัญ ' ของ ' พิมพ์ ” และค่าที่กำหนดของ “ โมดูล '. สิ่งนี้ทำให้สภาพแวดล้อมของแอปพลิเคชันทั้งหมดเป็นแบบแยกส่วน ซึ่งป้องกันการใช้งานเก่า” สามัญJS ” โมดูลและวิธีการ การแสดงภาพคู่คีย์/ค่านี้จะปรากฏดังนี้:





'พิมพ์' : : 'โมดูล' ,

วิธีแก้ไข: ลบคีย์ 'ประเภท'

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



เหตุผลที่ 2: การทำงานใน “.mjs ไฟล์

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

วิธีแก้ไข: แปลงนามสกุลไฟล์เป็น '.cjs'

เช่นเดียวกับซอร์สโค้ด JavaScript แบบโมดูลาร์ นามสกุลไฟล์ของ “ .mjs ' สามารถใช้ได้. การขยายเวลาของ “ .cjs ” มีไว้เพื่อ “ สามัญJS ” โมดูลและคุณสมบัติ ไฟล์นี้ไม่ยอมรับ “ แบบแยกส่วน ” แพ็คเกจเช่น “ นำเข้า ” แต่ทำงานได้ดีกับเวอร์ชัน ES5 ในกรณีของเรา นามสกุลไฟล์ที่เปลี่ยนแปลงจะแก้ไขปัญหาที่เกี่ยวข้องกับ “ จำเป็นต้อง() ' วิธี:

แนวทางทางเลือก: ใช้คำสั่ง ES6 “นำเข้า/ส่งออก”

จำเป็นต้อง() ” วิธีการถูกกำหนดและจัดทำโดย “ สามัญJs ” และเป็นที่ยอมรับจนถึงเวอร์ชัน JavaScript ของ ES5 (ECMAScript 5) ได้รับการเผยแพร่ในปี 2009 และตอนนี้ล้าสมัยไปแล้ว เนื่องจากโมดูลล่าสุดจำนวนมากไม่รองรับหรือทำงานไม่ถูกต้องใน ES5 เช่นเดียวกับ “ จำเป็นต้อง() ” ขณะนี้วิธีการถูกแทนที่ด้วยการเพิ่มประสิทธิภาพและใช้งานง่ายยิ่งขึ้น “ นำเข้า ” แถลงการณ์ การทำงานของทั้งสองหน่วยงานจะเหมือนกัน แต่ 'การนำเข้า' มีความได้เปรียบเนื่องจากเทคโนโลยีใหม่ล่าสุดและมีความสะดวกมากกว่า

สำหรับโมดูลเริ่มต้นหรือโมดูลภายนอก

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

นำเข้า readlineObj จาก 'อ่านไลน์' ;

คอนโซล บันทึก ( readlineObj ) ;

หลังจากรวบรวมโค้ดดังกล่าวแล้ว งานเดียวกับที่ “ จำเป็นต้อง() ” วิธีการถูกดำเนินการและ “ ReferenceError: ไม่ได้กำหนดความต้องการ ” จะไม่ปรากฏเช่นกัน:

สำหรับโมดูลที่สร้างขึ้นเอง

นำเข้า คำสั่ง ' ยังใช้เพื่อ 'นำเข้า' โมดูลหรือฟังก์ชันที่สร้างเองจากไฟล์อื่นที่อยู่ในไดเร็กทอรีเดียวกันหรือต่างกัน ฟังก์ชั่นหรือตัวแปรจากไฟล์อื่นจะถูกส่งออกโดยใช้เครื่องหมาย “ ส่งออก ' คำสำคัญ. ตัวอย่างเช่น ไปที่ข้อมูลโค้ดด้านล่างนี้ซึ่งฟังก์ชันเดียวและตัวแปรสุ่มจะถูกนำเข้าจากไฟล์อื่น:

แอพ.js

ค่าคงที่ ตัวแปรส่งออก = 'คู่มือนี้จัดทำโดย Linuxhint!' ;

ค่าคงที่ ฟังก์ชั่นการส่งออก = ( ) => {

คอนโซล บันทึก ( ตัวแปรส่งออก ) ;

} ;

ส่งออก ค่าเริ่มต้น ฟังก์ชั่นการส่งออก ;

ส่งออก {

ตัวแปรส่งออก

} ;

คำอธิบายของบล็อกโค้ดข้างต้นมีดังนี้:

  • ขั้นแรกให้ตัวแปรสุ่มชื่อ “ ตัวแปรส่งออก ” ถูกกำหนดไว้และฟังก์ชันลูกศร “ ฟังก์ชันการส่งออก() ” ถูกสร้างขึ้นเพื่อพิมพ์ “exportVariable” ที่สร้างขึ้นบนคอนโซล
  • คำหลักของ “ ค่าเริ่มต้นการส่งออก ' และ ' ส่งออก ” ใช้เพื่อส่งออก “ ฟังก์ชันการส่งออก() ' และ ' ตัวแปรส่งออก ” เอนทิตีจากไฟล์
  • เมื่อไฟล์นี้ถูกนำเข้า ฟังก์ชันที่ส่งออกและตัวแปรจะพร้อมใช้งานที่นั่น

ดัชนี js

“index.js” เป็นไฟล์รองของเราที่ฟังก์ชันและตัวแปรที่ส่งออกจะถูกนำเข้าและใช้งาน โดยมีโค้ดที่ระบุด้านล่าง:

นำเข้า ฟังก์ชั่นการส่งออก, { ตัวแปรส่งออก } จาก './app.js' ;

ฟังก์ชั่นการส่งออก ( ) ;

คอนโซล บันทึก ( ตัวแปรส่งออก ) ;

ในโค้ดข้างต้น ' นำเข้า ” คำสั่งที่ใช้ในการนำเข้าค่าเริ่มต้น “ ฟังก์ชันการส่งออก() ” และตัวแปร “ ตัวแปรส่งออก ' จาก ' แอพ.js ' ไฟล์.

จากนั้น เอนทิตีที่นำเข้าทั้งสองจะถูกเรียกใช้และแสดงบนคอนโซลเพื่อวัตถุประสงค์ในการตรวจสอบ

ตอนนี้ดำเนินการหลัก “ ดัชนี js ” โดยใช้คำสั่งด้านล่าง:

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

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

นั่นคือทั้งหมดที่เกี่ยวกับการแก้ไขข้อผิดพลาดที่ระบุ

บทสรุป

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