Hoe u de fout ‘vereiste is niet gedefinieerd’ in JavaScript/Node.js kunt oplossen

Hoe U De Fout Vereiste Is Niet Gedefinieerd In Javascript Node Js Kunt Oplossen



Tijdens het programmeertraject kunnen we verschillende fouten tegenkomen, zoals syntaxisfouten of runtimefouten. Een referentiefout is een runtimefout. Er treedt een referentiefout op wanneer er naar een niet-geïnitialiseerde variabele of een variabele die niet in het huidige bereik bestaat, wordt verwezen. De fout “vereisen is niet gedefinieerd” is een referentiefout die aangeeft dat er een probleem is met het trefwoord “vereisen”.

Dit artikel bespreekt in detail de redenen waarom deze fout optreedt en de manieren waarop we deze kunnen oplossen.

Hoe de ‘require is not gedefinieerd’-fout in JavaScript/Node.js op te lossen?

De referentiefout ‘require is not found’ treedt op wanneer de require()-functie wordt gevonden in het JavaScript-bestand dat in de webbrowser zou moeten worden uitgevoerd in plaats van in de Node.js-omgeving.







Wat is een require()-functie?

require() functie heeft een globaal bereik en wordt gegeven door Node.js. Het laadt en voert modules uit in de Node.js-applicatie. Veel browsers ondersteunen Node.js niet, dus de require()-functionaliteit is daarin niet beschikbaar.



Wanneer treedt deze fout op?

Deze fout treedt meestal op wanneer JavaScript in beide browsers samen met Node.js wordt gebruikt. De fout kan op drie manieren optreden:



  • Wanneer de functie require() wordt gebruikt in de browseromgeving.
  • Wanneer de functie require() wordt gebruikt in Node.js en het bestand package.json, wordt het type ingesteld op “module”
  • Wanneer de functie require() wordt gebruikt in Node.js, hebben de bestanden de extensie .mjs.

Met behulp van de syntaxis const “ mijnBestand = vereisen(‘./mijn-bestand’) ” in een webgebaseerde omgeving zal een foutmelding verschijnen die er als volgt uitziet:





Laten we verschillende oplossingen bespreken om deze fout op te lossen.



Geval 1: Fout in de browseromgeving

De require() functie werkt specifiek in Node.js. De meeste browsers zijn compatibel met Node.js en ondersteunen dus de require()-functionaliteit niet. De import-exportmodule van de ES6-module lost de fout ‘ReferenceError require is not gedefinieerd’ op. Hier is een voorbeeld van een code die laat zien hoe het kan worden gedaan:

DOCTYPEhtml >

< lichaam >





< scripttype = 'module' src = 'index.js' > script >

< scripttype = 'module' src = 'bestand.js' > script >

lichaam >

html >

Index.js wordt eerst geladen, zodat de functionaliteiten ervan kunnen worden gebruikt in file.js.

index.js-bestand

De index.js definieert een functieproduct en variabelen x en y:

exportfunctie product ( een, b ) {

opbrengst A * B ;

}

exporteren const = 10 ;

exporteren const En = 'TAYLOR'

bestand.js

De functionaliteiten uit het bestand index.js kunnen worden gebruikt in het andere js-bestand met de naam file.js. Bestand.js ziet er als volgt uit:

importeren { product, x, y } van './index.js' ;

troosten. loggen ( Product ( 10 , 5 ) ) ; // geeft 50 weer

troosten. loggen ( X ) ; // geeft 10 weer

troosten. loggen ( En ) ; // geeft 'TAYLOR' weer

Uitvoer

De volgende uitvoer laat zien hoe de fout ‘require is not gedefinieerd’ in een browseromgeving kan worden verwijderd met behulp van de ES6 import-exportmodule:

Geval 2: Fout tijdens het werken in Node.js

In het bestand package.json wordt deze fout weergegeven als u de eigenschap type instelt met de waardemodule. Het kan ook gebeuren als de functie require() wordt gebruikt in het bestand met de extensie .mjs.

Deze fout kan worden verwijderd wanneer u de type-eigenschap verwijdert die is ingesteld op de module en elk bestand met de extensie .mjs de naam .js krijgt.

//pakket.json

{

// verwijder de type-eigenschap die is ingesteld op de te gebruiken module require()

'type' : 'module' ,

}

index.js-bestand

Het index.js-bestand definieert een functie “product” en de variabelen x en y met de variabele reikwijdte. Hier ziet u hoe het index.js-bestand eruit zal zien:

functieproduct ( een, b ) {

opbrengst A * B ;

}

globaal. X = 13 ;

globaal. En = 'snel' ;

module. export = {

Product,

} ;

bestand.js

Het haalt het functieproduct uit het JS-bestand index.js met behulp van het trefwoord require(). Het bestand file.js ziet er als volgt uit:

const { Product } = vereisen ( './index.js' ) ;

troosten. loggen ( Product ( 10 , 9 ) ) ; // geeft 90 weer

troosten. loggen ( X ) ; // geeft 13 weer

troosten. loggen ( En ) ; // geeft 'snel' weer

Uitvoer

De uitvoer laat zien hoe de fout ‘Require is not found’ kan worden opgelost door de eigenschap van type set to module uit het package.json-bestand te verwijderen:

Dingen om te onthouden

  • De syntaxis van de ES6-module om een ​​module te importeren vereist dat u specifiek bent over de extensie van het modulebestand. JavaScript moet het bestandstype kennen voor een juiste verwerking.
  • De ES6-module kan niet gelijktijdig worden gebruikt met de functie require().

Conclusie

Door de syntaxis van de ES6-module in de browser te gebruiken, wordt het probleem 'vereist is niet gedefinieerd' opgelost, anders moet het codefragment worden uitgevoerd in Node.js. De fout treedt op wanneer de functie require() in een browser wordt gebruikt. In dit artikel wordt aan de hand van een voorbeeld besproken hoe het probleem ‘vereiste is niet gedefinieerd’ kan worden opgelost.