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.