Kaip išspręsti klaidą „reikalavimas nenustatytas“ JavaScript/Node.js

Kaip Isspresti Klaida Reikalavimas Nenustatytas Javascript Node Js



Programavimo kelionės metu galime susidurti su įvairiomis klaidomis, pvz., sintaksės klaidomis arba vykdymo klaidomis. Nuorodos klaida yra vykdymo klaida. Nuorodos klaida įvyksta, kai buvo daroma nuoroda į nepainicijuotą kintamąjį arba kintamąjį, kurio nėra šioje srityje. Klaida „reikalauti neapibrėžta“ yra nuoroda, kuri rodo, kad yra su raktiniu žodžiu „reikalauti“ susijusi problema.

Šiame straipsnyje išsamiai aptariamos šios klaidos priežastys ir būdai, kaip galime ją ištaisyti.

Kaip išspręsti klaidą „reikalavimas nenustatytas“ JavaScript/Node.js?

Nuorodos klaida „require nerasta“ įvyksta, kai „Require“ funkcija randama JavaScript faile, kuris turėjo būti vykdomas žiniatinklio naršyklėje, o ne Node.js aplinkoje.







Kas yra reikalauja() funkcija?

Funkcija reikalauti() turi visuotinę apimtį ir ją suteikia Node.js. Jis įkelia ir paleidžia modulius programoje Node.js. Daugelis naršyklių nepadeda Node.js, todėl reikalavimo () funkcija jose nepasiekiama.



Kada įvyksta ši klaida?

Ši klaida dažniausiai atsiranda, kai JavaScript naudojamas abiejose naršyklėse kartu su Node.js. Klaida gali atsirasti trimis būdais:



  • Kai naršyklės aplinkoje naudojama funkcija request().
  • Kai Node.js ir package.json faile naudojama funkcija request(), tipas nustatomas kaip „module“
  • Kai Node.js naudojama funkcija request(), failų plėtinys yra .mjs.

Naudojant sintaksę const “ myFile = reikalauti('./mano failas') “ žiniatinklio aplinkoje parodys klaidą, kuri atrodo taip:





Aptarkime įvairius šios klaidos sprendimo būdus.



1 atvejis: klaida naršyklės aplinkoje

Funkcija request() veikia konkrečiai Node.js. Dauguma naršyklių yra suderinamos su Node.js, todėl jos nepalaiko reikalavimo () funkcijos. ES6 modulio importo eksportavimo modulis išsprendžia klaidą „ReferenceError Reikalavimas nenustatytas“. Štai kodo pavyzdys, rodantis, kaip tai galima padaryti:

DOCTYPE html >

< kūnas >





< scenarijaus tipas = 'modulis' src = 'index.js' > scenarijus >

< scenarijaus tipas = 'modulis' src = 'failas.js' > scenarijus >

kūnas >

html >

Index.js įkeliamas pirmiausia, kad jo funkcijas būtų galima panaudoti faile.js.

index.js failą

Indeksas.js apibrėžia funkcijos produktą ir kintamuosius x ir y:

eksporto funkcijos produktas ( a, b ) {

grąžinti a * b ;

}

eksportuoti konst = 10 ;

eksportuoti konst ir = 'TAILORAS'

failas.js

Funkcijos iš failo index.js gali būti naudojamos kitame js faile, pavadintame file.js. File.js atrodo taip:

importuoti { produktas, x, y } „./index.js“ ;

konsolė. žurnalas ( produktas ( 10 , 5 ) ) ; // parodys 50

konsolė. žurnalas ( x ) ; // parodys 10

konsolė. žurnalas ( ir ) ; // parodys 'TAYLOR'

Išvestis

Toliau pateiktame išvestyje rodoma, kaip klaida „reikalauti nenustatyta“ naršyklės aplinkoje gali būti pašalinta naudojant ES6 importo eksporto modulį:

2 atvejis: Klaida dirbant su Node.js

Package.json faile nustačius tipo ypatybę su vertės moduliu gaunama ši klaida. Taip pat gali nutikti, jei faile, kurio plėtinys yra .mjs, naudojama funkcija request().

Šią klaidą galima pašalinti, kai pašalinate moduliui nustatytą tipo ypatybę ir bet koks failas su plėtiniu .mjs pervadinamas į .js.

//package.json

{

// pašalinkite tipo ypatybes, nustatytas moduliui, kad galėtumėte naudoti request()

'tipas' : 'modulis' ,

}

index.js failą

Failas index.js apibrėžia funkciją „produktas“ ir kintamuosius x bei y su kintamojo apimtimi. Štai kaip atrodys index.js failas:

funkcinis produktas ( a, b ) {

grąžinti a * b ;

}

globalus. x = 13 ;

globalus. ir = 'greitas' ;

modulis. eksportas = {

produktas,

} ;

failas.js

Jis paima funkcijos produktą iš JS failo index.js, naudodamas reikalingą () raktinį žodį. Failas file.js atrodys taip:

konst { produktas } = reikalauti ( „./index.js“ ) ;

konsolė. žurnalas ( produktas ( 10 , 9 ) ) ; // parodys 90

konsolė. žurnalas ( x ) ; // bus rodomas 13

konsolė. žurnalas ( ir ) ; // parodys 'swift'

Išvestis

Išvestyje rodoma, kaip klaida „Reikalauti nerasta“ gali būti pašalinta iš paketo.json failo pašalinus ypatybę, kurios tipas nustatytas moduliui:

Ką reikia atsiminti

  • ES6 modulio sintaksė, norint importuoti modulį, turi būti konkreti dėl modulio failo plėtinio. „JavaScript“ turėtų žinoti failo tipą, kad galėtų tinkamai apdoroti.
  • ES6 modulis negali būti naudojamas vienu metu su reikalaujama () funkcija.

Išvada

Naršyklėje naudojant ES6 modulio sintaksę išsprendžiama problema „reikalauti neapibrėžta“ arba kitaip kodo fragmentas turi būti paleistas Node.js. Klaida įvyksta, kai naršyklėje naudojama funkcija request(). Šiame straipsnyje buvo aptarta, kaip pavyzdžiu galima išspręsti problemą „reikalavimas nenustatytas“.