Kuidas lahendada JavaScripti/Node.js-i viga „nõue pole määratletud”.

Kuidas Lahendada Javascripti Node Js I Viga Noue Pole Maaratletud



Programmeerimise käigus võime esineda erinevaid vigu, nagu süntaksivead või käitusaja vead. Võrdlusviga on käitusaegne viga. Viiteviga ilmneb siis, kui viidatakse initsialiseerimata muutujale või muutujale, mida praeguses ulatuses ei eksisteeri. Viga 'nõua pole määratletud' on viiteviga, mis näitab, et märksõnaga 'nõua' on probleem.

Selles artiklis käsitletakse üksikasjalikult selle vea ilmnemise põhjuseid ja selle parandamise viise.

Kuidas lahendada JavaScripti/Node.js-i viga „nõue pole määratletud”?

Viiteviga 'require'i ei leitud' ilmneb siis, kui JavaScripti failist leitakse funktsioon request(), mis pidi käivitama veebibrauseris Node.js keskkonna asemel.





Mis on nõutav() funktsioon?

Funktsiooni request() ulatus on globaalne ja selle annab Node.js. See laadib ja käivitab moodulid rakenduses Node.js. Paljud brauserid ei toeta Node.js-i, mistõttu ei ole funktsioon request() neis saadaval.



Millal see viga ilmneb?

See tõrge ilmneb tavaliselt siis, kui JavaScripti kasutatakse mõlemas brauseris koos Node.js-iga. Viga võib ilmneda kolmel viisil:



  • Kui brauseri keskkonnas kasutatakse funktsiooni request().
  • Kui failis Node.js ja failis package.json kasutatakse funktsiooni request(), määratakse tüübiks „moodul”
  • Kui failis Node.js kasutatakse funktsiooni request(), on failide laiend .mjs.

Kasutades süntaksi const ' myFile = nõuda('./minu-fail') ” ilmub veebipõhises keskkonnas veateade, mis näeb välja järgmine:





Arutame selle vea lahendamiseks erinevaid lahendusi.



1. juhtum: viga brauseri keskkonnas

Funktsioon request() töötab konkreetselt failis Node.js. Enamik brausereid ühildub Node.js-iga, nii et need ei toeta nõue()-funktsiooni. ES6 mooduli impordi ekspordi moodul lahendab tõrke „ReferenceError nõuet pole määratletud”. Siin on näide koodist, mis näitab, kuidas seda teha:

DOCTYPE html >

< keha >





< skripti tüüp = 'moodul' src = 'index.js' > stsenaarium >

< skripti tüüp = 'moodul' src = 'fail.js' > stsenaarium >

keha >

html >

Index.js laaditakse esmalt, et selle funktsioone saaks failis file.js kasutada.

index.js faili

Indeks.js määratleb funktsiooni toote ning muutujad x ja y:

ekspordifunktsiooniga toode ( a, b ) {

tagasi a * b ;

}

eksportida konst = 10 ;

eksportida konst ja = 'TAYLOR'

fail.js

Faili index.js funktsioone saab kasutada ka teises js-failis, mille nimi on file.js. File.js näeb välja selline:

importida { toode, x, y } alates './index.js' ;

konsool. logi ( toode ( 10 , 5 ) ) ; // kuvab 50

konsool. logi ( x ) ; // kuvab 10

konsool. logi ( ja ) ; // kuvab 'TAYLOR'

Väljund

Järgmises väljundis kuvatakse, kuidas saab ES6 impordi ekspordimooduli abil brauserikeskkonnas tõrke 'nõutav pole määratletud' eemaldada:

2. juhtum: viga rakenduses Node.js töötamisel

Failis package.json annab selle tõrke tüübi atribuudi määramisel väärtusmooduliga. See võib juhtuda ka siis, kui failis, mille laiend on .mjs, kasutatakse funktsiooni request().

Selle vea saab eemaldada, kui eemaldate moodulile määratud tüübiatribuudi ja mis tahes faili laiendiga .mjs nimetatakse ümber .js-ks.

//package.json

{

// eemaldage moodulile seatud atribuutide tüüp, et kasutada request()

'tüüp' : 'moodul' ,

}

index.js faili

Fail index.js määratleb funktsiooni 'product' ning muutujad x ja y muutuja ulatusega. Fail index.js näeb välja järgmine:

funktsioon toode ( a, b ) {

tagasi a * b ;

}

globaalne. x = 13 ;

globaalne. ja = 'kiire' ;

moodul. eksporti = {

toode,

} ;

fail.js

See võtab funktsioonitoote JS-failist index.js, kasutades selleks märksõna nõudmist(). Fail file.js näeb välja selline:

konst { toode } = nõuda ( './index.js' ) ;

konsool. logi ( toode ( 10 , 9 ) ) ; // kuvab 90

konsool. logi ( x ) ; // kuvatakse 13

konsool. logi ( ja ) ; // kuvab 'swift'

Väljund

Väljund kuvab, kuidas tõrke 'Nõua ei leitud' saab lahendada, eemaldades failist package.json atribuudi, mille tüüp on seatud moodulile:

Asjad, mida meeles pidada

  • ES6 mooduli süntaks mooduli importimiseks nõuab mooduli faili laienduse spetsiifilisust. JavaScript peaks selle õigeks töötlemiseks teadma failitüüpi.
  • ES6 moodulit ei saa kasutada samaaegselt funktsiooniga request().

Järeldus

ES6 mooduli süntaksi kasutamine brauseris lahendab probleemi 'nõua pole määratletud' või muul juhul tuleb koodilõik käivitada failis Node.js. Viga ilmneb siis, kui brauseris kasutatakse funktsiooni request(). Selles artiklis arutati, kuidas saab näite abil lahendada probleemi „nõutav ei ole määratletud”.