Hur löser jag felet 'Kan inte hitta modulen' med Node.js?

Hur Loser Jag Felet Kan Inte Hitta Modulen Med Node Js



Liksom andra programmeringsspråk behöver Node.js inte bryta applikationens källkod i små bitar. Den skriver all källkod till en '.js'-fil och tolken orsakar inga problem. Men samtidigt som du skapar en mycket komplex Node.js-applikation rekommenderas det att dela upp källkoden i mindre moduler och sedan kombinera dem till en sammanhängande applikation.

Snabb översikt

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: 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. js

Utdata 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 mysql

Utdata visar den framgångsrika installationen av 'mysql'-modulen i det aktuella Node.js-projektet:

Kör nu filen '.js' igen:

nodindex. js

Det 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. js

Det 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. js

Det 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. js

Utdata 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. js

Nu 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. js

Utdata 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. js

Nu 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. js

Utdata 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. js

Det 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. js

Hä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. js

Hä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 fil

ls // 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.