Kako riješiti pogrešku 'zahtjev nije definiran' u JavaScript/Node.js

Kako Rijesiti Pogresku Zahtjev Nije Definiran U Javascript Node Js



Tijekom programiranja možemo naići na različite pogreške poput sintaktičkih pogrešaka ili pogrešaka u vremenu izvođenja. Referentna pogreška je pogreška vremena izvođenja. Referentna pogreška se javlja kada se referencira neinicijalizirana varijabla ili varijabla koja ne postoji u sadašnjem opsegu. Pogreška 'require is not defined' referentna je pogreška koja ukazuje da postoji problem s ključnom riječi 'require'.

Ovaj članak detaljno govori o razlozima nastanka ove pogreške i načinima na koje je možemo popraviti.

Kako riješiti pogrešku 'zahtjev nije definiran' u JavaScript/Node.js?

Referentna pogreška 'require nije pronađen' događa se kada se funkcija require() pronađe u JavaScript datoteci koja je trebala biti izvršena u web pregledniku umjesto u Node.js okruženju.







Što je funkcija require()?

require() funkcija ima globalni opseg i daje je Node.js. Učitava i pokreće module u aplikaciji Node.js. Mnogi preglednici ne podržavaju Node.js pa funkcija require() u njima nije dostupna.



Kada se ova pogreška događa?

Ova se pogreška obično pojavljuje kada se JavaScript koristi u oba preglednika zajedno s Node.js. Greška se može pojaviti na tri načina:



  • Kada se funkcija require() koristi u okruženju preglednika.
  • Kada se funkcija require() koristi u Node.js i datoteci package.json, tip je postavljen na 'modul'
  • Kada se funkcija require() koristi u Node.js, datoteke imaju nastavak .mjs.

Korištenje sintakse const “ mojaDatoteka = zahtijeva('./moja-datoteka') ” u web-baziranom okruženju izbacit će pogrešku koja izgleda ovako:





Raspravljajmo o različitim rješenjima za rješavanje ove pogreške.



Slučaj 1: Greška u okruženju preglednika

Funkcija require() radi posebno u Node.js. Većina preglednika kompatibilna je s Node.js tako da ne podržavaju funkciju require(). Modul za uvoz i izvoz ES6 modula rješava pogrešku 'ReferenceError require is not defined'. Evo primjera koda koji pokazuje kako se to može učiniti:

DOCTYPE html >

< tijelo >





< vrsta skripte = 'modul' src = 'index.js' > skripta >

< vrsta skripte = 'modul' src = 'datoteka.js' > skripta >

tijelo >

html >

Index.js se prvi učitava kako bi se njegove funkcionalnosti mogle koristiti u file.js.

index.js datoteka

Index.js definira proizvod funkcije i varijable x i y:

proizvod funkcije izvoza ( a, b ) {

povratak a * b ;

}

izvoz konst = 10 ;

izvoz konst i = 'TAYLOR'

datoteka.js

Funkcionalnosti iz datoteke index.js mogu se koristiti u drugoj js datoteci pod nazivom file.js. File.js izgleda ovako:

uvoz { proizvod, x, y } iz './index.js' ;

konzola. log ( proizvod ( 10 , 5 ) ) ; // prikazat će 50

konzola. log ( x ) ; // prikazat će 10

konzola. log ( i ) ; // prikazat će 'TAYLOR'

Izlaz

Sljedeći izlaz prikazuje kako se pogreška 'zahtjev nije definiran' u okruženju preglednika može ukloniti korištenjem ES6 modula za uvoz i izvoz:

Slučaj 2: Greška tijekom rada u Node.js

U datoteci package.json postavljanje svojstva tipa s modulom vrijednosti dobiva ovu pogrešku. To se također može dogoditi ako se funkcija require() koristi u datoteci s ekstenzijom .mjs.

Ova se pogreška može ukloniti kada uklonite svojstvo vrste postavljeno na modul i bilo koja datoteka s ekstenzijom .mjs bude preimenovana u .js.

//package.json

{

// uklonite svojstvo tipa postavljeno na modul za korištenje require()

'tip' : 'modul' ,

}

index.js datoteka

Datoteka index.js definira funkciju 'product' i varijable x i y s opsegom varijable. Evo kako će izgledati datoteka index.js:

proizvod funkcije ( a, b ) {

povratak a * b ;

}

globalno. x = 13 ;

globalno. i = 'brz' ;

modul. izvozi = {

proizvod,

} ;

datoteka.js

Uzima proizvod funkcije iz JS datoteke index.js pomoću ključne riječi require(). Datoteka file.js će izgledati ovako:

konst { proizvod } = zahtijevati ( './index.js' ) ;

konzola. log ( proizvod ( 10 , 9 ) ) ; // prikazat će 90

konzola. log ( x ) ; // prikazat će 13

konzola. log ( i ) ; // prikazat će 'swift'

Izlaz

Izlaz prikazuje kako se pogreška 'Zahtjev nije pronađen' može riješiti uklanjanjem svojstva tipa postavljenog na modul iz datoteke package.json:

Stvari koje treba zapamtiti

  • Sintaksa ES6 modula za uvoz modula zahtijeva specifičnu ekstenziju datoteke modula. JavaScript bi trebao znati vrstu datoteke za pravilnu obradu.
  • Modul ES6 ne može se koristiti istovremeno s funkcijom require().

Zaključak

Korištenje sintakse ES6 modula u pregledniku rješava problem 'zahtjev nije definiran' ili se u suprotnom isječak koda mora pokrenuti u Node.js. Pogreška se događa kada se funkcija require() koristi u pregledniku. Ovaj članak raspravlja o tome kako se problem 'zahtjev nije definiran' može riješiti pomoću primjera.