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«.