Kako razrešiti napako »require is not defined« v JavaScript/Node.js

Kako Razresiti Napako Require Is Not Defined V Javascript Node Js



Med potjo programiranja lahko naletimo na različne napake, kot so sintaksne napake ali napake med izvajanjem. Referenčna napaka je napaka med izvajanjem. Referenčna napaka se pojavi, ko se sklicuje na neinicializirano spremenljivko ali spremenljivko, ki ne obstaja v trenutnem obsegu. Napaka »require is not defined« je referenčna napaka, ki nakazuje, da obstaja težava s ključno besedo »require«.

Ta članek podrobno obravnava razloge za pojav te napake in načine, kako jo lahko odpravimo.

Kako razrešiti napako »require is not defined« v JavaScript/Node.js?

Referenčna napaka »require is not found« se zgodi, ko je v datoteki JavaScript najdena funkcija require(), ki naj bi se izvajala v spletnem brskalniku namesto v okolju Node.js.







Kaj je funkcija require()?

funkcija require() ima globalni obseg in jo podaja Node.js. Nalaga in izvaja module v aplikaciji Node.js. Mnogi brskalniki ne podpirajo Node.js, zato funkcija require() v njih ni na voljo.



Kdaj se pojavi ta napaka?

Ta napaka se običajno pojavi, ko se JavaScript uporablja v obeh brskalnikih skupaj z Node.js. Napaka se lahko pojavi na tri načine:



  • Ko se funkcija require() uporablja v okolju brskalnika.
  • Ko se funkcija require() uporablja v Node.js in datoteki package.json, je tip nastavljen na »modul«
  • Ko je v Node.js uporabljena funkcija require(), imajo datoteke končnico .mjs.

Uporaba sintakse const “ myFile = require('./my-file') « v spletnem okolju vrže napako, ki je videti takole:





Razpravljajmo o različnih rešitvah za odpravo te napake.



1. primer: Napaka v okolju brskalnika

Funkcija require() deluje posebej v Node.js. Večina brskalnikov je združljivih z Node.js, zato ne podpirajo funkcije require(). Modul za uvoz in izvoz modula ES6 odpravlja napako »ReferenceError require is not defined«. Tukaj je primer kode, ki prikazuje, kako je to mogoče storiti:

DOCTYPE html >

< telo >





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

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

telo >

html >

Index.js se najprej naloži, tako da je mogoče njegove funkcije uporabiti v file.js.

datoteka index.js

Index.js definira produkt funkcije in spremenljivki x in y:

izdelek z izvozno funkcijo ( a, b ) {

vrnitev a * b ;

}

izvoz konst = 10 ;

izvoz konst in = 'TAYLOR'

file.js

Funkcionalnosti iz datoteke index.js je mogoče uporabiti v drugi datoteki js, imenovani file.js. File.js izgleda takole:

uvoz { izdelek, x, y } od './index.js' ;

konzola. dnevnik ( izdelek ( 10 , 5 ) ) ; // bo prikazano 50

konzola. dnevnik ( x ) ; // bo prikazano 10

konzola. dnevnik ( in ) ; // bo prikazal 'TAYLOR'

Izhod

Naslednji izhod prikazuje, kako je mogoče napako »zahteva ni definirana« v okolju brskalnika odstraniti z uporabo uvozno izvoznega modula ES6:

2. primer: Napaka med delom v Node.js

V datoteki package.json nastavitev lastnosti tipa z modulom vrednosti povzroči to napako. Lahko se zgodi tudi, če je v datoteki s pripono .mjs uporabljena funkcija require().

To napako lahko odpravite, ko odstranite lastnost tipa, nastavljeno za modul, in se katera koli datoteka s pripono .mjs preimenuje v .js.

//package.json

{

// odstranite lastnost tipa, nastavljeno za modul za uporabo require()

'tip' : 'modul' ,

}

datoteka index.js

Datoteka index.js definira funkcijo »product« ter spremenljivki x in y z obsegom spremenljivke. Takole bo videti datoteka index.js:

funkcijski izdelek ( a, b ) {

vrnitev a * b ;

}

globalno. x = 13 ;

globalno. in = 'hitra' ;

modul. izvoz = {

izdelek,

} ;

file.js

Zmnožek funkcije vzame iz datoteke JS index.js z uporabo ključne besede require(). Datoteka file.js bo videti takole:

konst { izdelek } = zahtevati ( './index.js' ) ;

konzola. dnevnik ( izdelek ( 10 , 9 ) ) ; // bo prikazano 90

konzola. dnevnik ( x ) ; // bo prikazano 13

konzola. dnevnik ( in ) ; // bo prikazal 'swift'

Izhod

Izhod prikazuje, kako je mogoče napako »Require is not found« odpraviti tako, da iz datoteke package.json odstranite lastnost vrste, nastavljene na modul:

Stvari, ki si jih morate zapomniti

  • Sintaksa modula ES6 za uvoz modula zahteva natančnost glede pripone datoteke modula. JavaScript mora poznati vrsto datoteke za pravilno obdelavo.
  • Modula ES6 ni mogoče uporabljati hkrati s funkcijo require().

Zaključek

Uporaba sintakse modula ES6 v brskalniku odpravi težavo »zahteva ni definirana« ali drugače je treba delček kode izvajati v Node.js. Napaka se zgodi, ko se v brskalniku uporablja funkcija require(). Ta članek je razpravljal o tem, kako je mogoče s primerom rešiti težavo »zahteva ni definirana«.