Sådan løses 'Kan ikke finde modul'-fejl ved brug af Node.js?

Sadan Loses Kan Ikke Finde Modul Fejl Ved Brug Af Node Js



Som andre programmeringssprog behøver Node.js ikke at bryde applikationens kildekode i små stykker. Den skriver al kildekoden ind i en '.js'-fil, og tolken forårsager ingen problemer. Men mens du opretter en meget kompleks Node.js-applikation, anbefales det at opdele kildekoden i mindre moduler og derefter kombinere dem til en sammenhængende applikation.

Hurtig disposition

Hvad er et modul i Node.js?

I Node.js er ' modul ” svarer til et bibliotek, der bygger en forbindelse med en applikation baseret på dens kontekst. Det giver udviklerne mulighed for at genbruge den indkapslede kode, når det er nødvendigt. Det er kategoriseret i tre hovedkategorier: 'indbyggede', 'lokale' og 'tredjeparts' moduler. Disse moduler indeholder yderligere en lang række metoder og egenskaber, der udfører operationer specificeret i henhold til deres funktionaliteter.







Sådan løser du fejlen 'Kan ikke finde modul' ved at bruge Node.js?

Dette afsnit opregner alle mulige årsager, der genererer fejlen 'Kan ikke finde modul' og giver også de brugbare løsninger til at løse det:



Årsag 1: Påkrævet modul ikke installeret

Den mest almindelige årsag til ' Kan ikke finde modulet 'Fejlen er, at den påkrævede' tredjepartsmodul er ikke installeret ” i det aktuelle Node.js-projekt. Antag, at vi importerer tredjeparts 'mysql'-modulet i Node.js-applikationen på denne måde:



konst mysql = kræve ( 'mysql' ) ;

I ovenstående kommando, ' kræve() ”-metoden inkluderer “mysql”-modulet til den aktuelle node.js-applikation.





Udfør '.js'-filen:

node indeks. js

Nedenstående output genererer den diskuterede fejl, fordi 'mysql'-modulet ikke er installeret i det aktuelle Node.js-projekt:



Løsning: Installer det påkrævede modul

Løsningen på den ovenfor omtalte fejl er at installere det nødvendige modul korrekt ved hjælp af ' npm / garn ” pakkeansvarlig. Til dette scenarie installeres det nødvendige 'mysql'-modul med installationskommandoen 'npm':

npm installer mysql

Outputtet viser den vellykkede installation af 'mysql'-modulet i det aktuelle Node.js-projekt:

Udfør nu filen '.js' igen:

node indeks. js

Det kan analyseres, at ovenstående kommando blev udført med succes uden at generere fejlen 'Kan ikke finde modul':

Årsag 2: Forkert modulsti

En anden grund til ' Kan ikke finde modulet ' fejl er ' forkert modulsti ”. Det sker normalt, når brugeren importerer et lokalt modul gennem dets relative sti. Antag, at brugeren opretter et brugerdefineret modul i den specifikke mappe og importerer det til Node.js-applikationen. Før du gør dette, skal du sikre dig, at den angivne sti er korrekt, ellers vil den diskuterede fejl blive stødt på.

For eksempel et lokalt/brugerdefineret modul med navnet ' mit modul ” findes i mappen “./custom-modules”:

Brugeren importerer den ovenfor fremhævede 'myModule' til den aktuelle Node.js-applikation gennem dens relative sti:

konst Sprog = kræve ( './myModule' ) ;

Kør filen '.js':

node indeks. js

Det kan ses, at på grund af den forkerte sti til 'myModule' genereres fejlen 'Kan ikke finde modul':

Løsning: Angiv den korrekte modulsti

Løsningen på den ovenfor omtalte fejl er at angive den korrekte eller nøjagtige sti til modulet, hvor det er placeret. Her sendte vi den korrekte sti 'myModule' for at løse fejlen 'Kan ikke finde modul':

konst Sprog = kræve ( './custom-modules/myModule' ) ;

Start '.js'-filen:

node indeks. js

Det kan observeres, at nedenstående output ikke viser den stødte fejl, fordi den angivne sti til det importerede modul er blevet rettet:

Årsag 3: Forkert modulnavn (der skelnes mellem store og små bogstaver)

Modulerne er ' skelner mellem store og små bogstaver ' i Linux og macOS, såsom hvis modulnavnet er installeret med store bogstaver, og brugeren importerer det til små bogstaver, så ' Kan ikke finde modulet ' fejl vil blive genereret. Dette skyldes, at der er et misforhold mellem det faktiske modulnavn og importerklæringen.

Her importeres det installerede 'csvtojson'-modul med 'store bogstaver' til Node.js-applikationen:

konst csvtojson = kræve ( 'CSVTOJSON' ) ;

Udfør '.js'-filen:

node indeks. js

Udgangen genererer fejlen 'Kan ikke finde modul' på grund af det forkerte modulnavn:

Løsning: Indtast det korrekte modulnavn

Løsningen på ovenstående fejl er at angive det korrekte bogstav (nedre eller øvre) af det importerede modul, mens du bruger ' kræve() ” metode. I dette scenarie er 'csvtojson'-modulet angivet i 'require()'-metoden i det korrekte tilfælde:

konst csvtojson = kræve ( 'csvtojson' ) ;

Kør filen '.js' igen:

node indeks. js

Nu genererede ovenstående kommando ikke fejlen 'Kan ikke finde modul', fordi den importerede pakkesag er den samme som dens faktiske navn:

Årsag 4: Forkert filtypenavn

Det ' Kan ikke finde modulet ' fejl kan også opstå på grund af ' forkert filtypenavn ”. På samme måde som den forkerte filsti sker det i tilfælde af lokale moduler. For eksempel oprettes et lokalt modul i '.json'-filen og specificeres i Node.js-applikationen med '.js'-udvidelsen, hvorefter ovenstående særlige fejl genereres:

I dette scenarie er ' myModule.js ” vist i årsagen “ Forkert modulsti” tages som en prøvefil. Den tilgås i den aktuelle Node.js-applikation ved at angive dens udvidelse '.json' sådan her:

konst Sprog = kræve ( './custom-modules/myModule.json' ) ;

Udfør '.js'-filen:

node indeks. js

Outputtet genererer fejlen 'Kan ikke finde modul' på grund af den forkerte filtypenavn af 'myModule'-filen:

Løsning: Skriv Korrekt filtypenavn

Løsningen på den omtalte fejl er at indtaste den korrekte filtypenavn, hvori det lokale modul er oprettet. For eksempel specificerede vi den korrekte filtypenavn til filen 'myModule.js' for at løse fejlen 'Kan ikke finde modul':

konst Sprog = kræve ( './custom-modules/myModule.js' ) ;

Kør filen '.js':

node indeks. js

Nu er ovenstående kommando blevet udført uden at vise fejlen 'Kan ikke finde modul':

Årsag 5: Global installation af et modul

Nodemodulerne kan installeres lokalt (for et specifikt projekt) eller globalt (for alle projekter). I Linux , Hvis det påkrævede modul er installeret globalt i et operativsystem og er tilgået i et specifikt projekt uden den lokale installation, så ' Kan ikke finde modulet ' fejl genereres.

For eksempel ' mongodb '-modulet er globalt installeret i Linux-operativsystemet via ' sudo npm installer -g mongodb ” kommando og tilgås lokalt i det specifikke nodeprojekt:

konst mongodb = kræve ( 'mongodb' )

Kør filen '.js':

node indeks. js

Outputtet genererer den diskuterede fejl, fordi 'mongodb' ikke er installeret lokalt i det aktuelle Node-projekt:

Løsning: Installer modulet lokalt

Løsningen på den stødte fejl er at installere modulet lokalt til et specifikt Node.js-projekt på et Linux-baseret operativsystem.

Her er ' mongodb ”-modulet installeres lokalt i det aktuelle projekt ved hjælp af “npm”-installationskommandoen:

npm installer mongodb

Når den lokale installation af 'mongodb' er fuldført, importer du den til filen '.js' og kør den:

node indeks. js

Det kan ses, at fejlen 'Kan ikke finde modul' er blevet løst ved at installere 'mongodb'-modulet lokalt for det aktuelle Node.js-projekt:

I Windows, den globale og lokale installation af et modul genererer ikke fejlen 'Kan ikke finde modul'.

Årsag 6: Manglende indtastningsfil

Det ' Kan ikke finde modulet ” fejl kan også genereres på grund af manglende hovedindgangsfil i en “package.json” i modulet. Hovedindgangsfilen for hvert modul er 'index.js'-filen som standard.

Antag, at hvis brugeren fjerner det utilsigtet, vil den ovenfor stødte fejl blive genereret. Dette skyldes, at under import af det angivne modul ' kræve() ”-metoden navigerer til modulets mappe og leder efter indgangspunktet, hvis det ikke findes, kan det ikke importere det modul til Node.js-applikationen.

Indgangsfilen 'index.js' for det påkrævede modul er til stede i dets mappestruktur. Nedenstående uddrag viser indgangsfilen til 'mysql'-modulet:

Nu fjernes den ovenfor fremhævede 'index.js'-fil fra 'mysql'-mappen og importeres derefter 'mysql'-modulet til Node.js-applikationen:

konst mysql = kræve ( 'mysql' )

Udfør '.js'-filen:

node indeks. js

Her genererer outputtet fejlen 'Kan ikke finde modul' på grund af manglende indgangsfil for 'mysql'-modulet:

Løsning: Installer påkrævet modul igen

Løsningen på den ovenfor stødte fejl er at slette ' node_modules ” bibliotek og installer det nødvendige modul igen. Her installeres 'mysql'-modulet igen efter sletning af 'node_modules'-mappen:

npm installer mysql

Efter den vellykkede installation af 'mysql', den nye ' node_modules ”-mappen genereres automatisk indeholdende mappestrukturen for “mysql”-modulet, hvori “index.js” er til stede:

Kør nu filen '.js' igen:

node indeks. js

Her genererer output ikke nogen 'Kan ikke finde modul'-fejl på grund af eksistensen af ​​en indtastningsfil med navnet 'index.js' af 'mysql'-modulet:

Hvad skal man gøre, hvis fejlen 'Kan ikke finde modul' stadig vedvarer?

Hvis ' Kan ikke finde modulet '-fejlen fortsætter efter at have løst den med en af ​​ovenstående løsninger, og slet derefter ' node_modules ” mappe. Mappen 'node_modules' genereres automatisk, når et tredjepartsmodul er installeret. Den indeholder alle de tredjepartspakker, som Node.js-projektet afhænger af.

Desuden er ' package-lock.json ”-fil genereres også automatisk, når en pakke er installeret med “npm”. Den opbevarer en oversigt over afhængigheder såvel som underafhængigheder, som pakken afhænger af, sammen med deres versioner. Hvis pakken er installeret med 'garn', er dette filnavn ' garn.lås ”.

Løsning: Fjern mappen 'node_modules' og filen 'package-lock.json'.

Løsningen på den stødte fejl er at slette mappen 'node_modules' og filen 'package-lock.json/yarn.lock' og installere den nødvendige pakke igen.

I Linux , kan den ovenfor angivne mappe og filer slettes ved hjælp af nedenstående ' rm (fjern)' kommando:

rm - rf node_modules pakke - låse. json //Slet mappe og fil

ls // Vis fil og mapper

I ovenstående kommando ' -r ' flag sletter den angivne mappe ' rekursivt ' inklusive alle dets undermapper og ' f ' flag fortæller tolken om at udføre denne opgave ' kraftigt ”:

Outputtet viser, at mappen 'node_modules' og filen 'package-lock.json/yarn.lock' er blevet fjernet fuldstændigt fra det aktuelle Node.js-projekt:

I Windows , kan brugeren slette mappen 'node_modules' og filen 'package-lock.json/yarn.lock' ved blot at trykke på ' slette ”-tasten eller ved at bruge “slet”-indstillingen fra rullemenuen.

Det handler om at løse fejlen 'Kan ikke finde modul' i Node.js.

Konklusion

For at løse ' Kan ikke finde modulet ”-fejl, ”installer det påkrævede modul”, ”angiv dets korrekte sti”, ”skriv det rigtige tilfælde i ”require()”-metoden”, og også ”skriv den korrekte filtypenavn”. Desuden kan det også løses at 'installere modulet lokalt' i Node.js-projektet. Hvis den særlige fejl fortsætter, skal du fjerne mappen 'node_modules', filen 'package-lock.json', og derefter installere det påkrævede modul igen via 'npm/yarn'. Dette indlæg har diskuteret alle mulige årsager sammen med deres løsning til at løse fejlen 'Kan ikke finde modul' ved hjælp af Node.js.