Cum se rezolvă eroarea „necesitatea nu este definită” în JavaScript/Node.js

Cum Se Rezolva Eroarea Necesitatea Nu Este Definita In Javascript Node Js



În timpul călătoriei de programare, este posibil să întâlnim diferite erori, cum ar fi erori de sintaxă sau erori de rulare. O eroare de referință este o eroare de rulare. O eroare de referință apare atunci când a fost referită o variabilă neinițializată sau o variabilă care nu există în domeniul actual. Eroarea „require is not defined” este o eroare de referință care indică faptul că există o problemă cu cuvântul cheie „require”.

Acest articol discută în detaliu motivele pentru care apare această eroare și modalitățile în care o putem remedia.

Cum se rezolvă eroarea „necesitatea nu este definită” în JavaScript/Node.js?

Eroarea de referință „require is not found” apare atunci când funcția require() este găsită în fișierul JavaScript care trebuia să fie executat în browserul web în loc de mediul Node.js.







Ce este o funcție require()?

funcția require() are un domeniu de aplicare global și este dată de Node.js. Încarcă și rulează module în aplicația Node.js. Multe browsere nu ajută Node.js, așa că funcționalitatea require() nu este disponibilă în ele.



Când se întâmplă această eroare?

Această eroare apare de obicei atunci când JavaScript este utilizat în ambele browsere împreună cu Node.js. Eroarea poate apărea în trei moduri:



  • Când funcția require() este utilizată în mediul browser.
  • Când funcția require() este utilizată în Node.js și fișierul package.json, tipul este setat la „module”
  • Când funcția require() este utilizată în Node.js, fișierele au extensia .mjs.

Folosind sintaxa const “ myFile = require(‘./my-file’) ” într-un mediu bazat pe web va arunca o eroare care arată astfel:





Să discutăm diferite soluții pentru a rezolva această eroare.



Cazul 1: Eroare în mediul browser

Funcția require() funcționează în mod specific în Node.js. Majoritatea browserelor sunt compatibile cu Node.js, așa că nu acceptă funcționalitatea require(). Modulul de import și export al modulului ES6 rezolvă eroarea „ReferenceError require not defined”. Iată un exemplu de cod care arată cum se poate face:

DOCTYPE html >

< corp >





< tip de script = 'modul' src = „index.js” > scenariu >

< tip de script = 'modul' src = „file.js” > scenariu >

corp >

html >

Index.js este încărcat mai întâi, astfel încât funcționalitățile sale să poată fi utilizate în file.js.

fișierul index.js

Index.js definește un produs de funcție și variabilele x și y:

produs cu funcție de export ( a, b ) {

întoarcere A * b ;

}

export const = 10 ;

export const și = 'TAYLOR'

fișier.js

Funcționalitățile din fișierul index.js pot fi utilizate în celălalt fișier js numit file.js. File.js arată astfel:

import { produs, x, y } din „./index.js” ;

consolă. Buturuga ( produs ( 10 , 5 ) ) ; // va afișa 50

consolă. Buturuga ( X ) ; // va afișa 10

consolă. Buturuga ( și ) ; // va afișa „TAYLOR”

Ieșire

Următoarea ieșire afișează modul în care eroarea „necesar nu este definită” într-un mediu de browser poate fi eliminată utilizând modulul de import export ES6:

Cazul 2: Eroare în timpul lucrului în Node.js

În fișierul package.json, setarea proprietății tip cu modulul valoare primește această eroare. Se poate întâmpla și dacă funcția require() este utilizată în fișierul cu extensia .mjs.

Această eroare poate fi eliminată atunci când eliminați proprietatea tip setată la modul și orice fișier cu extensia .mjs este redenumit .js.

//package.json

{

// elimină proprietatea tip setată la modul pentru a utiliza require()

'tip' : 'modul' ,

}

fișierul index.js

Fișierul index.js definește o funcție „produs” și variabilele x și y cu domeniul de aplicare al variabilei. Iată cum va arăta fișierul index.js:

produs funcțional ( a, b ) {

întoarcere A * b ;

}

global. X = 13 ;

global. și = 'rapid' ;

modul. exporturi = {

produs,

} ;

fișier.js

Preia produsul funcției din fișierul JS index.js folosind cuvântul cheie require(). Fișierul file.js va arăta astfel:

const { produs } = cere ( „./index.js” ) ;

consolă. Buturuga ( produs ( 10 , 9 ) ) ; // va afișa 90

consolă. Buturuga ( X ) ; // va afișa 13

consolă. Buturuga ( și ) ; // va afișa „swift”

Ieșire

Ieșirea afișează modul în care eroarea „Require is not found” poate fi rezolvată prin eliminarea proprietății de tip set la module din fișierul package.json:

Lucruri de amintit

  • Sintaxa modulului ES6 pentru a importa un modul necesită a fi specific cu privire la extensia fișierului modulului. JavaScript ar trebui să cunoască tipul fișierului pentru procesarea sa corectă.
  • Modulul ES6 nu poate fi utilizat simultan cu funcția require().

Concluzie

Utilizarea sintaxei modulului ES6 în browser rezolvă problema „necesitatea nu este definită” sau, altfel, fragmentul de cod trebuie să fie rulat în Node.js. Eroarea apare atunci când funcția require() este utilizată într-un browser. Acest articol a discutat despre modul în care problema „necesitatea nu este definită” poate fi rezolvată cu un exemplu.