Hur man löser felet 'require is not defined' i JavaScript/Node.js

Hur Man Loser Felet Require Is Not Defined I Javascript Node Js



Under programmeringsresan kan vi stöta på olika fel som syntaxfel eller körtidsfel. Ett referensfel är ett körtidsfel. Ett referensfel uppstår när en icke-initierad variabel eller en variabel som inte finns i det aktuella omfånget har refererats. Felet 'require is not defined' är ett referensfel som indikerar att det finns ett problem med nyckelordet 'require'.

Den här artikeln diskuterar i detalj orsakerna till detta fel och hur vi kan åtgärda det.

Hur löser jag felet 'require is not defined' i JavaScript/Node.js?

Referensfelet 'require is not found' inträffar när funktionen require() hittas i JavaScript-filen som var tänkt att köras i webbläsaren istället för Node.js-miljön.







Vad är en require() funktion?

funktionen require() har ett globalt omfång och ges av Node.js. Den laddar och kör moduler i Node.js-applikationen. Många webbläsare hjälper inte Node.js så funktionen require() är inte tillgänglig i dem.



När uppstår detta fel?

Det här felet uppstår vanligtvis när JavaScript används i båda webbläsarna tillsammans med Node.js. Felet kan uppstå på tre sätt:



  • När funktionen require() används i webbläsarmiljön.
  • När funktionen require() används i Node.js och filen package.json, ställs typen till 'modul'
  • När funktionen require() används i Node.js har filerna filtillägget .mjs.

Använda syntaxen const ' myFile = require(‘./min-fil’) ” i en webbaserad miljö kommer att ge ett fel som ser ut så här:





Låt oss diskutera olika lösningar för att lösa detta fel.



Fall 1: Fel i webbläsarmiljön

Funktionen require() fungerar specifikt i Node.js. De flesta webbläsare är kompatibla med Node.js så de stöder inte funktionen require(). ES6-modulens importexportmodul löser felet 'ReferenceError requires not defined'. Här är ett exempel på en kod som visar hur det kan göras:

DOCTYPE html >

< kropp >





< skripttyp = 'modul' src = 'index.js' > manus >

< skripttyp = 'modul' src = 'file.js' > manus >

kropp >

html >

Index.js laddas först så att dess funktioner kan användas i file.js.

index.js-filen

index.js definierar en funktionsprodukt och variabler x och y:

exportfunktionsprodukt ( a, b ) {

lämna tillbaka a * b ;

}

exportera konst = 10 ;

exportera konst och = 'TAYLOR'

file.js

Funktionerna från filen index.js kan användas i den andra js-filen som heter file.js. File.js ser ut så här:

importera { produkt, x, y } från './index.js' ;

trösta. logga ( produkt ( 10 , 5 ) ) ; // visar 50

trösta. logga ( x ) ; // visar 10

trösta. logga ( och ) ; // kommer att visa 'TAYLOR'

Produktion

Följande utdata visar hur felet 'require is not defined' i en webbläsarmiljö kan tas bort med hjälp av ES6-importexportmodulen:

Fall 2: Fel vid arbete i Node.js

I filen package.json, inställning av egenskapen type med modulen värde, får detta fel. Det kan också hända om funktionen require() används i filen med filtillägget .mjs.

Det här felet kan tas bort när du tar bort typegenskapen som är inställd på modulen och alla filer med filtillägget .mjs döps om till .js.

//package.json

{

// ta bort typ-egenskapen som är inställd på modulen att använda require()

'typ' : 'modul' ,

}

index.js-filen

Filen index.js definierar en funktion 'produkt' och variablerna x och y med variabeln scope. Så här kommer filen index.js att se ut:

funktionsprodukt ( a, b ) {

lämna tillbaka a * b ;

}

global. x = 13 ;

global. och = 'snabb' ;

modul. export = {

produkt,

} ;

file.js

Den hämtar funktionsprodukten från JS-filen index.js genom att använda nyckelordet require(). Filen file.js kommer att se ut så här:

konst { produkt } = behöva ( './index.js' ) ;

trösta. logga ( produkt ( 10 , 9 ) ) ; // visar 90

trösta. logga ( x ) ; // visar 13

trösta. logga ( och ) ; // kommer att visa 'snabb'

Produktion

Utdata visar hur felet 'Require is not found' kan lösas genom att ta bort egenskapen av typen inställd på modul från filen package.json:

Saker att komma ihåg

  • ES6-modulsyntax för att importera en modul kräver att du är specifik om modulfilens tillägg. JavaScript bör känna till filtypen för korrekt bearbetning.
  • ES6-modulen kan inte användas samtidigt med funktionen require().

Slutsats

Att använda ES6-modulsyntaxen i webbläsaren löser problemet 'require is not defined' eller annars måste kodavsnittet köras i Node.js. Felet inträffar när funktionen require() används i en webbläsare. Den här artikeln diskuterade hur problemet 'require is not defined' kan lösas med ett exempel.