Snabb översikt
- Vad är en 'modul' i Node.js?
- Hur löser jag felet 'Kan inte hitta modulen' med hjälp av Node.js?
- Slutsats
Vad är en modul i Node.js?
I Node.js, ' modul ” motsvarar ett bibliotek som bygger en koppling till en applikation utifrån dess kontext. Det tillåter utvecklarna att återanvända den inkapslade koden närhelst den behövs. Det är kategoriserat i tre huvudkategorier: 'inbyggda', 'lokala' och 'tredje parts' moduler. Dessa moduler innehåller vidare ett brett utbud av metoder och egenskaper som utför operationer specificerade enligt deras funktionalitet.
Hur löser jag felet 'Kan inte hitta modulen' med hjälp av Node.js?
Det här avsnittet tar upp alla möjliga orsaker som genererar felet 'Kan inte hitta modulen' och tillhandahåller även fungerande lösningar för att lösa det:
- Orsak 1: Modulen inte installerad
- Lösning: Installera den nödvändiga modulen
- Orsak 2: Felaktig modulsökväg
- Lösning: Ange rätt modulsökväg
- Orsak 3: Felaktigt modulnamn (skiftlägeskänsligt)
- Lösning: Skriv in rätt modulnamn
- Orsak 4: Felaktigt filtillägg
- Lösning: Skriv Korrekt filtillägg
- Orsak 5: Global installation av en modul
- Lösning: Installera modulen lokalt
- Orsak 6: Inmatningsfil saknas
- Lösning: Installera nödvändig modul igen
- Vad ska man göra om felet 'Kan inte hitta modulen' fortfarande kvarstår?
- Lösning: Ta bort mappen 'node_modules' och filen 'package-lock.json'.
Orsak 1: Obligatorisk modul inte installerad
Den vanligaste orsaken till ' Kan inte hitta modulen 'Fel är att det krävs' tredje parts modul är inte installerad ” i det aktuella Node.js-projektet. Anta att vi importerar tredjeparts 'mysql'-modulen i Node.js-applikationen på detta sätt:
konst mysql = behöva ( 'mysql' ) ;
I kommandot ovan, ' behöva() ”-metoden inkluderar “mysql”-modulen till den aktuella node.js-applikationen.
Kör '.js'-filen:
nodindex. jsUtdata nedan genererar det diskuterade felet eftersom 'mysql'-modulen inte är installerad i det aktuella Node.js-projektet:
Lösning: Installera den nödvändiga modulen
Lösningen på det ovan diskuterade felet är att installera den nödvändiga modulen korrekt med hjälp av ' npm / garn ” pakethanterare. För detta scenario installeras den nödvändiga 'mysql'-modulen med installationskommandot 'npm':
npm installera mysqlUtdata visar den framgångsrika installationen av 'mysql'-modulen i det aktuella Node.js-projektet:
Kör nu filen '.js' igen:
nodindex. jsDet kan analyseras att kommandot ovan kördes framgångsrikt utan att generera felet 'Kan inte hitta modulen':
Orsak 2: Felaktig modulsökväg
En annan anledning till ' Kan inte hitta modulen 'felet är ' felaktig modulsökväg ”. Det händer vanligtvis när användaren importerar en lokal modul genom dess relativa sökväg. Anta att användaren skapar en anpassad modul i den specifika mappen och importerar den till Node.js-applikationen. Innan du gör detta, se till att den angivna sökvägen är korrekt annars kommer det diskuterade felet att uppstå.
Till exempel, en lokal/användardefinierad modul med namnet ' myModule ' finns i mappen './custom-modules':
Användaren importerar den ovan markerade 'myModule' till den aktuella Node.js-applikationen genom dess relativa sökväg:
konst språk = behöva ( './myModule' ) ;Kör filen '.js':
nodindex. jsDet kan ses att på grund av den felaktiga sökvägen till 'myModule' genereras felet 'Kan inte hitta modulen':
Lösning: Ange rätt modulsökväg
Lösningen på det ovan diskuterade felet är att specificera den korrekta eller exakta sökvägen för modulen där den är placerad. Här skickade vi den korrekta sökvägen 'myModule' för att lösa felet 'Kan inte hitta modulen':
konst språk = behöva ( './custom-modules/myModule' ) ;Initiera '.js'-filen:
nodindex. jsDet kan observeras att utdata nedan inte visar det påträffade felet eftersom den angivna sökvägen för den importerade modulen har korrigerats:
Orsak 3: Felaktigt modulnamn (skiftlägeskänsligt)
Modulerna är ' skiftlägeskänsliga ' i Linux och macOS, till exempel om modulnamnet är installerat med versaler och användaren importerar det till gemener och sedan ' Kan inte hitta modulen ”-fel kommer att genereras. Detta beror på att det finns en obalans mellan det faktiska modulnamnet och importsatsen.
Här importeras den installerade 'csvtojson'-modulen med 'versaler' till Node.js-applikationen:
konst csvtojson = behöva ( 'CSVTOJSON' ) ;Kör '.js'-filen:
nodindex. jsUtdata genererar felet 'Kan inte hitta modul' på grund av felaktigt modulnamn:
Lösning: Skriv in rätt modulnamn
Lösningen på det ovanstående felet är att ange rätt skiftläge (nedre eller övre) för den importerade modulen när du använder ' behöva() 'metoden. I det här scenariot anges 'csvtojson'-modulen i metoden 'require()' i rätt fall:
konst csvtojson = behöva ( 'csvtojson' ) ;Kör filen '.js' igen:
nodindex. jsNu genererade kommandot ovan inte felet 'Kan inte hitta modulen' eftersom det importerade paketfallet är detsamma som dess faktiska namn:
Orsak 4: Felaktigt filtillägg
den ' Kan inte hitta modulen ”-fel kan också uppstå på grund av ” felaktig filändelse ”. I likhet med den felaktiga filsökvägen händer det i fallet med lokala moduler. Till exempel skapas en lokal modul i '.json'-filen och specificeras i Node.js-applikationen med tillägget '.js' och sedan genereras ovanstående specifika fel:
I detta scenario, ' myModule.js ' som visas i ' Felaktig modulsökväg' tas som en exempelfil. Den nås i den aktuella Node.js-applikationen genom att ange dess tillägg '.json' så här:
konst språk = behöva ( './custom-modules/myModule.json' ) ;Kör '.js'-filen:
nodindex. jsUtdata genererar felet 'Kan inte hitta modulen' på grund av den felaktiga filtillägget för 'myModule'-filen:
Lösning: Skriv Korrekt filtillägg
Lösningen på det diskuterade felet är att skriva in rätt filtillägg där den lokala modulen skapas. Till exempel angav vi rätt filtillägg för filen 'myModule.js' för att lösa felet 'Kan inte hitta modulen':
konst språk = behöva ( './custom-modules/myModule.js' ) ;Kör filen '.js':
nodindex. jsNu har ovanstående kommando utförts utan att visa felet 'Kan inte hitta modulen':
Orsak 5: Global installation av en modul
Nodmodulerna kan installeras lokalt (för ett specifikt projekt) eller globalt (för alla projekt). I Linux , Om den erforderliga modulen är installerad globalt i ett operativsystem och nås i ett specifikt projekt utan den lokala installationen, visas ' Kan inte hitta modulen ”-fel genereras.
Till exempel, ' mongodb '-modulen installeras globalt i operativsystemet Linux via ' sudo npm installera -g mongodb ” kommandot och nås lokalt i det specifika nodprojektet:
konst mongodb = behöva ( 'mongodb' )Kör filen '.js':
nodindex. jsUtdata genererar det diskuterade felet eftersom 'mongodb' inte är installerat lokalt i det aktuella nodprojektet:
Lösning: Installera modulen lokalt
Lösningen på det påträffade felet är att installera modulen lokalt för ett specifikt Node.js-projekt på ett Linux-baserat operativsystem.
Här, ' mongodb ”-modulen installeras lokalt i det aktuella projektet med hjälp av installationskommandot ”npm”:
npm installera mongodb
När den lokala installationen av 'mongodb' är klar, importera den till filen '.js' och kör den:
nodindex. jsDet kan ses att felet 'Kan inte hitta modulen' har lösts genom att installera modulen 'mongodb' lokalt för det aktuella Node.js-projektet:
I Windows, den globala och lokala installationen av en modul genererar inte felet 'Kan inte hitta modul'.
Orsak 6: Inmatningsfil saknas
den ' Kan inte hitta modulen ”-fel kan också genereras på grund av att huvudinmatningsfilen saknas i en ”package.json” i modulen. Huvudinmatningsfilen för varje modul är filen 'index.js' som standard.
Antag att om användaren tar bort det oavsiktligt kommer det ovan påträffade felet att genereras. Detta beror på att när du importerar den angivna modulen ' behöva() ”-metoden navigerar till den modulens mapp och letar efter ingångspunkten, om den inte finns kan den inte importera den modulen till Node.js-applikationen.
Inmatningsfilen 'index.js' för den nödvändiga modulen finns i dess mappstruktur. Nedanstående utdrag visar ingångsfilen för 'mysql'-modulen:
Nu tas den ovan markerade 'index.js'-filen bort från mappen 'mysql' och importeras sedan 'mysql'-modulen till Node.js-applikationen:
konst mysql = behöva ( 'mysql' )Kör '.js'-filen:
nodindex. jsHär genererar utdata felet 'Kan inte hitta modulen' på grund av att ingångsfilen för 'mysql'-modulen saknas:
Lösning: Installera nödvändig modul igen
Lösningen på ovanstående fel är att ta bort ' node_modules ”-katalogen och installera den nödvändiga modulen igen. Här installeras 'mysql'-modulen igen efter att katalogen 'node_modules' tagits bort:
npm installera mysql
Efter den framgångsrika installationen av 'mysql', den nya ' node_modules '-katalogen genereras automatiskt som innehåller mappstrukturen för 'mysql'-modulen där 'index.js' finns:
Kör nu filen '.js' igen:
nodindex. jsHär genererar inte utdata något 'Kan inte hitta modulen'-fel på grund av att det finns en inmatningsfil med namnet 'index.js' av 'mysql'-modulen:
Vad ska man göra om felet 'Kan inte hitta modulen' fortfarande kvarstår?
Om ' Kan inte hitta modulen ”-felet kvarstår efter att ha löst det med någon av ovanstående lösningar och radera sedan ” node_modules ' mapp. Mappen 'node_modules' genereras automatiskt när en tredjepartsmodul installeras. Den innehåller alla tredjepartspaket som Node.js-projektet är beroende av.
Dessutom har ' package-lock.json ”-fil genereras också automatiskt när ett paket installeras med ”npm”. Det håller register över beroenden såväl som underberoenden som paketet beror på tillsammans med deras versioner. Om paketet är installerat med 'garn' är detta filnamn ' garn.lås ”.
Lösning: Ta bort mappen 'node_modules' och filen 'package-lock.json'.
Lösningen på det påträffade felet är att ta bort mappen 'node_modules' och filen 'package-lock.json/yarn.lock' och installera det nödvändiga paketet igen.
I Linux , kan den ovan angivna mappen och filerna raderas med hjälp av nedan angivna ' rm (ta bort)” kommando:
rm - rf node_modules paket - låsa. json //Ta bort mapp och fills // Visa fil och kataloger
I kommandot ovan visas ' -r ' flaggan tar bort den angivna mappen ' rekursivt ' inklusive alla dess underkataloger och ' f ' flaggan talar om för tolken att utföra denna uppgift ' kraftfullt ”:
Utdata visar att mappen 'node_modules' och filen 'package-lock.json/yarn.lock' har tagits bort helt från det aktuella Node.js-projektet:
I Windows , kan användaren ta bort mappen 'node_modules' och filen 'package-lock.json/yarn.lock' genom att helt enkelt trycka på ' radera ”-tangenten eller använd alternativet “radera” från rullgardinsmenyn.
Det handlar om att lösa felet 'Kan inte hitta modulen' i Node.js.
Slutsats
För att lösa ' Kan inte hitta modulen ”-fel, ”installera den nödvändiga modulen”, ”ange dess korrekta sökväg”, ”skriv rätt skiftläge i metoden ”require()” och även ”skriv in rätt filtillägg”. Dessutom kan det också lösas att 'installera modulen lokalt' i Node.js-projektet. Om det specifika felet kvarstår, ta bort mappen 'node_modules', filen 'package-lock.json' och installera sedan den nödvändiga modulen igen via 'npm/yarn'. Det här inlägget har diskuterat alla möjliga orsaker tillsammans med deras lösning för att lösa felet 'Kan inte hitta modulen' med Node.js.