JavaScript/Node.js:n 'vaatimusta ei ole määritelty' -virheen ratkaiseminen

Javascript Node Js N Vaatimusta Ei Ole Maaritelty Virheen Ratkaiseminen



Ohjelmointimatkan aikana saatamme kohdata erilaisia ​​virheitä, kuten syntaksivirheitä tai ajonaikaisia ​​virheitä. Viitevirhe on ajonaikainen virhe. Viittausvirhe tapahtuu, kun on viitattu alustamattomaan muuttujaan tai muuttujaan, jota ei ole olemassa nykyisessä laajuudessa. Virhe 'require ei ole määritelty' on viitevirhe, joka osoittaa, että avainsanassa 'require' on ongelma.

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.