Tässä artikkelissa käsitellään yksityiskohtaisesti tämän virheen syitä ja tapoja korjata se.
Kuinka ratkaista 'vaatimusta ei ole määritetty' -virhe JavaScript/Node.js:ssä?
Viitevirhe 'require ei löydy' tapahtuu, kun request()-funktio löytyy JavaScript-tiedostosta, joka oli tarkoitus suorittaa verkkoselaimessa Node.js-ympäristön sijaan.
Mikä on request()-funktio?
request()-funktiolla on maailmanlaajuinen laajuus, ja sen antaa Node.js. Se lataa ja suorittaa moduuleja Node.js-sovelluksessa. Monet selaimet eivät tue Node.js:ää, joten vaatia()-toimintoa ei ole saatavilla niissä.
Milloin tämä virhe tapahtuu?
Tämä virhe ilmenee yleensä, kun JavaScriptiä käytetään molemmissa selaimissa Node.js:n kanssa. Virhe voi ilmetä kolmella tavalla:
- Kun selainympäristössä käytetään request()-funktiota.
- Kun Node.js:ssa ja package.json-tiedostossa käytetään request()-funktiota, tyypiksi asetetaan 'module'.
- Kun Node.js:ssä käytetään request()-funktiota, tiedostojen tunniste on .mjs.
Käyttämällä syntaksia const ' myFile = vaatia('./oma-tiedosto') ' Web-pohjaisessa ympäristössä antaa virheen, joka näyttää tältä:
Keskustellaan erilaisista ratkaisuista tämän virheen ratkaisemiseksi.
Tapaus 1: Virhe selainympäristössä
Reikä()-funktio toimii nimenomaan Node.js:ssä. Useimmat selaimet ovat yhteensopivia Node.js:n kanssa, joten ne eivät tue request()-toimintoa. ES6-moduulin tuonti-vientimoduuli ratkaisee 'ReferenceError-vaatimusta ei ole määritetty' -virheen. Tässä on esimerkki koodista, joka näyttää, kuinka se voidaan tehdä:
DOCTYPE html >< kehon >
< skriptityyppi = 'moduuli' src = 'index.js' > käsikirjoitus >
< skriptityyppi = 'moduuli' src = 'tiedosto.js' > käsikirjoitus >
kehon >
html >
Index.js ladataan ensin, jotta sen toimintoja voidaan hyödyntää file.js:ssä.
index.js-tiedosto
Indeksi.js määrittää funktion tuotteen ja muuttujat x ja y:
vientitoiminnon tuote ( a, b ) {palata a * b ;
}
viedä konst = 10 ;
viedä konst ja = 'TAYLOR'
tiedosto.js
Index.js-tiedoston toimintoja voidaan käyttää toisessa js-tiedostossa nimeltä file.js. File.js näyttää tältä:
tuonti { tuote, x, y } alkaen './index.js' ;konsoli. Hirsi ( tuote ( 10 , 5 ) ) ; // näyttää 50
konsoli. Hirsi ( x ) ; // näyttää 10
konsoli. Hirsi ( ja ) ; // näyttää 'TAYLOR'
Lähtö
Seuraavassa tulosteessa näkyy, kuinka selainympäristön virhe 'vaatimusta ei ole määritetty' voidaan poistaa ES6-tuontivientimoduulin avulla:
Tapaus 2: Virhe työskennellessään Node.js:ssä
Package.json-tiedostossa type-ominaisuuden asettaminen arvomoduulilla saa tämän virheen. Se voi tapahtua myös, jos tiedostossa, jonka tunniste on .mjs, käytetään request()-funktiota.
Tämä virhe voidaan poistaa, kun poistat moduulille määritetyn type-ominaisuuden ja minkä tahansa tiedoston, jonka tunniste on .mjs, nimeksi tulee .js.
//package.json{
// poista moduulille asetettu tyyppiominaisuus käyttääksesi request()
'tyyppi' : 'moduuli' ,
}
index.js-tiedosto
Index.js-tiedosto määrittää funktion 'product' ja muuttujat x ja y muuttujan laajuudella. Tältä index.js-tiedosto näyttää:
toimiva tuote ( a, b ) {palata a * b ;
}
maailmanlaajuisesti. x = 13 ;
maailmanlaajuisesti. ja = 'nopea' ;
moduuli. vientiä = {
tuote,
} ;
tiedosto.js
Se ottaa funktiotuotteen JS-tiedostosta index.js käyttämällä request()-avainsanaa. File.js-tiedosto näyttää tältä:
konst { tuote } = vaatia ( './index.js' ) ;konsoli. Hirsi ( tuote ( 10 , 9 ) ) ; // näyttää 90
konsoli. Hirsi ( x ) ; // näyttää 13
konsoli. Hirsi ( ja ) ; // näyttää 'swift'
Lähtö
Tulos näyttää, kuinka 'Edellytyksiä ei löydy' -virhe voidaan ratkaista poistamalla tyyppi set to module ominaisuus package.json-tiedostosta:
Muistettavaa
- ES6-moduulin syntaksi moduulin tuomiseksi edellyttää tarkkaa moduulitiedoston laajennusta. JavaScriptin pitäisi tietää tiedostotyyppi asianmukaista käsittelyä varten.
- ES6-moduulia ei voi käyttää samanaikaisesti request()-funktion kanssa.
Johtopäätös
ES6-moduulin syntaksin käyttäminen selaimessa ratkaisee ongelman 'vaatimusta ei ole määritetty' tai muuten koodinpätkä on suoritettava Node.js:ssä. Virhe tapahtuu, kun request()-funktiota käytetään selaimessa. Tässä artikkelissa käsiteltiin, kuinka 'vaatimusta ei ole määritelty' -ongelma voidaan ratkaista esimerkin avulla.