כיצד לפתור את השגיאה 'דרוש אינו מוגדר' ב-JavaScript/Node.js

Kyzd Lptwr T Hsgy H Drws Ynw Mwgdr B Javascript Node Js



במהלך מסע התכנות, אנו עשויים להיתקל בשגיאות שונות כמו שגיאות תחביר או שגיאות זמן ריצה. שגיאת הפניה היא שגיאת זמן ריצה. שגיאת התייחסות מתרחשת כאשר בוצע הפניה למשתנה לא מאותחל או למשתנה שאינו קיים בהיקף הנוכחי. השגיאה 'דרוש אינו מוגדר' היא שגיאת הפניה המעידה על כך שיש בעיה עם מילת המפתח 'דרוש'.

מאמר זה דן בפירוט בסיבות שגיאה זו מתרחשת והדרכים שבהן אנו יכולים לתקן אותה.

כיצד לפתור את השגיאה 'דרוש לא מוגדר' ב-JavaScript/Node.js?

שגיאת ההפניה 'require is not found' מתרחשת כאשר הפונקציה require() נמצאת בקובץ JavaScript שהיה אמור להתבצע בדפדפן האינטרנט במקום בסביבת Node.js.







מהי פונקציית require()?

לפונקציה require() יש היקף גלובלי והיא ניתנת על ידי Node.js. הוא טוען ומריץ מודולים ביישום Node.js. דפדפנים רבים אינם מסייעים ל-Node.js ולכן הפונקציונליות require() אינה זמינה בהם.



מתי השגיאה הזו מתרחשת?

שגיאה זו מתרחשת בדרך כלל כאשר נעשה שימוש ב-JavaScript בשני הדפדפנים יחד עם Node.js. השגיאה יכולה להתרחש בשלוש דרכים:



  • כאשר נעשה שימוש בפונקציה require() בסביבת הדפדפן.
  • כאשר נעשה שימוש בפונקציה require() ב-Node.js ובקובץ package.json, הסוג מוגדר ל-'module'
  • כאשר נעשה שימוש בפונקציה require() ב-Node.js לקבצים יש סיומת של .mjs.

שימוש בתחביר const ' myFile = require(‘./my-file’) ' בסביבה מבוססת אינטרנט יזרוק שגיאה שנראית כך:





הבה נדון בפתרונות שונים לפתרון שגיאה זו.



מקרה 1: שגיאה בסביבת הדפדפן

הפונקציה require() פועלת במיוחד ב-Node.js. רוב הדפדפנים תואמים ל-Node.js ולכן הם אינם תומכים בפונקציונליות require() . מודול ייצוא מודול ES6 פותר את השגיאה 'ReferenceError require is not defined'. הנה דוגמה לקוד שמראה כיצד ניתן לעשות זאת:

DOCTYPE html >

< גוּף >





< סוג סקריפט = 'מודול' src = 'index.js' > תַסרִיט >

< סוג סקריפט = 'מודול' src = 'file.js' > תַסרִיט >

גוּף >

html >

Index.js נטען ראשון כך שניתן יהיה להשתמש בפונקציונליות שלו ב-file.js.

קובץ index.js

ה-index.js מגדיר תוצר של פונקציה ומשתנים x ו-y:

מוצר פונקציית ייצוא ( א, ב ) {

לַחֲזוֹר א * ב ;

}

יְצוּא const = 10 ;

יְצוּא const ו = 'טיילור'

file.js

ניתן להשתמש בפונקציונליות מקובץ index.js בקובץ js האחר בשם file.js. File.js נראה כך:

יְבוּא { מוצר, x, y } מ './index.js' ;

לְנַחֵם. עֵץ ( מוצר ( 10 , 5 ) ) ; // יציג 50

לְנַחֵם. עֵץ ( איקס ) ; // יציג 10

לְנַחֵם. עֵץ ( ו ) ; // יציג את 'TAYLOR'

תְפוּקָה

הפלט הבא מציג כיצד ניתן להסיר את השגיאה 'דרוש אינו מוגדר' בסביבת דפדפן באמצעות מודול ייצוא הייבוא ​​ES6:

מקרה 2: שגיאה בזמן עבודה ב-Node.js

בקובץ package.json, הגדרת המאפיין type עם מודול הערך מקבל שגיאה זו. זה יכול לקרות גם אם הפונקציה require() מנוצלת בקובץ עם סיומת .mjs.

ניתן להסיר שגיאה זו כאשר אתה מסיר את מאפיין ה-type שהוגדר למודול וכל קובץ עם סיומת .mjs שונה בשם .js.

//package.json

{

// הסר את מאפיין ה-type המוגדר למודול לשימוש ב-require()

'סוּג' : 'מודול' ,

}

קובץ index.js

הקובץ index.js מגדיר פונקציה 'מוצר' ומשתנים x ו-y עם היקף המשתנה. כך ייראה קובץ index.js:

מוצר פונקציה ( א, ב ) {

לַחֲזוֹר א * ב ;

}

גלוֹבָּלִי. איקס = 13 ;

גלוֹבָּלִי. ו = 'מָהִיר' ;

מודול. יצוא = {

מוצר,

} ;

file.js

הוא לוקח את תוצר הפונקציה מקובץ JS index.js באמצעות מילת המפתח require() . הקובץ file.js ייראה כך:

const { מוצר } = לִדרוֹשׁ ( './index.js' ) ;

לְנַחֵם. עֵץ ( מוצר ( 10 , 9 ) ) ; // יציג 90

לְנַחֵם. עֵץ ( איקס ) ; // יציג 13

לְנַחֵם. עֵץ ( ו ) ; // יציג 'swift'

תְפוּקָה

הפלט מציג כיצד ניתן לפתור את השגיאה 'Require is not found' על ידי הסרת מאפיין הסוג שהוגדר למודול מהקובץ package.json:

דברים לזכור

  • תחביר מודול ES6 כדי לייבא מודול מחייב להיות ספציפי לגבי הסיומת של קובץ המודול. JavaScript צריך לדעת את סוג הקובץ לצורך העיבוד הנכון שלו.
  • לא ניתן להשתמש במודול ES6 בו-זמנית עם הפונקציה require().

סיכום

שימוש בתחביר מודול ES6 בדפדפן פותר את הבעיה 'דרוש אינו מוגדר' או אחרת יש להפעיל את קטע הקוד ב-Node.js. השגיאה מתרחשת כאשר נעשה שימוש בפונקציה require() בדפדפן. מאמר זה דן כיצד ניתן לפתור את בעיית 'הדרוש אינו מוגדר' באמצעות דוגמה.