Kā novērst kļūdu “Nevar atrast moduli”, izmantojot Node.js?

Ka Noverst Kludu Nevar Atrast Moduli Izmantojot Node Js



Tāpat kā citām programmēšanas valodām, Node.js nav nepieciešams sadalīt lietojumprogrammas pirmkodu mazos gabaliņos. Tas ieraksta visu avota kodu “.js” failā, un tulks nerada nekādas problēmas. Tomēr, veidojot ļoti sarežģītu Node.js lietojumprogrammu, ieteicams avota kodu sadalīt mazākos moduļos un pēc tam apvienot tos vienotā lietojumprogrammā.

Ātrā kontūra

Kas ir modulis pakalpojumā Node.js?

Vietnē Node.js “ modulis ” atbilst bibliotēkai, kas veido savienojumu ar lietojumprogrammu, pamatojoties uz tās kontekstu. Tas ļauj izstrādātājiem atkārtoti izmantot iekapsulēto kodu, kad vien tas ir nepieciešams. Tas ir iedalīts trīs galvenajās kategorijās: “iebūvētie”, “lokālie” un “trešās puses” moduļi. Šie moduļi turklāt satur plašu metožu un īpašību klāstu, kas veic darbības, kas norādītas atbilstoši to funkcionalitātei.







Kā novērst kļūdu “Nevar atrast moduli”, izmantojot Node.js?

Šajā sadaļā ir uzskaitīti visi iespējamie iemesli, kas rada kļūdu “Nevar atrast moduli”, kā arī sniegti praktiski risinājumi tās novēršanai:



1. iemesls: nepieciešamais modulis nav instalēts

Visizplatītākais iemesls ' Nevar atrast moduli 'Kļūda ir tāda, ka nepieciešamais' trešās puses modulis nav instalēts ” pašreizējā Node.js projektā. Pieņemsim, ka mēs importējam trešās puses “mysql” moduli lietojumprogrammā Node.js šādā veidā:



konst mysql = pieprasīt ( 'mysql' ) ;

Iepriekš minētajā komandā ' prasīt () ” metode ietver “mysql” moduli pašreizējai node.js lietojumprogrammai.





Izpildiet failu “.js”:

mezglu indekss. js

Tālāk redzamā izvade ģenerē apspriesto kļūdu, jo 'mysql' modulis nav instalēts pašreizējā Node.js projektā:



Risinājums: instalējiet nepieciešamo moduli

Iepriekš apspriestās kļūdas risinājums ir pareizi instalēt nepieciešamo moduli, izmantojot “ npm / dzija ” pakotņu pārvaldnieks. Šim scenārijam nepieciešamais “mysql” modulis ir instalēts ar instalēšanas komandu “npm”:

npm instalēt mysql

Izvade parāda veiksmīgu “mysql” moduļa instalēšanu pašreizējā Node.js projektā:

Tagad vēlreiz izpildiet failu “.js”:

mezglu indekss. js

Var analizēt, ka iepriekš minētā komanda tika veiksmīgi izpildīta, neģenerējot kļūdu “Nevar atrast moduli”:

2. iemesls: nepareizs moduļa ceļš

Vēl viens iemesls ' Nevar atrast moduli 'kļūda ir ' nepareizs moduļa ceļš ”. Parasti tas notiek, kad lietotājs importē vietējo moduli, izmantojot tā relatīvo ceļu. Pieņemsim, ka lietotājs izveido pielāgotu moduli konkrētajā mapē un importē to lietojumprogrammā Node.js. Pirms to izdarīt, pārliecinieties, vai norādītais ceļš ir pareizs, pretējā gadījumā tiks sastapta apspriestā kļūda.

Piemēram, lokāls/lietotāja definēts modulis ar nosaukumu “ myModule ' atrodas mapē './custom-modules':

Lietotājs importē iepriekš izcelto “myModule” pašreizējā Node.js lietojumprogrammā, izmantojot tās relatīvo ceļu:

konst valodas = pieprasīt ( './myModule' ) ;

Palaidiet failu “.js”:

mezglu indekss. js

Var redzēt, ka nepareizā “myModule” ceļa dēļ tiek ģenerēta kļūda “Nevar atrast moduli”:

Risinājums: norādiet pareizo moduļa ceļu

Iepriekš apspriestās kļūdas risinājums ir norādīt pareizo vai precīzu moduļa ceļu, kurā tas atrodas. Šeit mēs izgājām pareizo ceļu “myModule”, lai atrisinātu kļūdu “Nevar atrast moduli”:

konst valodas = pieprasīt ( './custom-modules/myModule' ) ;

Sāciet “.js” failu:

mezglu indekss. js

Var novērot, ka zemāk redzamā izvade neuzrāda radušos kļūdu, jo ir izlabots norādītais importētā moduļa ceļš:

3. iemesls: nepareizs moduļa nosaukums (reģistrjutīgs)

Moduļi ir ' reģistrjutīgs ” operētājsistēmās Linux un macOS, piemēram, ja moduļa nosaukums ir instalēts ar lielajiem burtiem un lietotājs to importē ar mazajiem burtiem, tad “ Nevar atrast moduli ” tiks ģenerēta kļūda. Tas ir tāpēc, ka pastāv neatbilstība starp faktisko moduļa nosaukumu un importēšanas paziņojumu.

Šeit instalētais modulis “csvtojson” tiek importēts ar “lielajiem burtiem” lietojumprogrammā Node.js:

konst csvtojson = pieprasīt ( 'CSVTOJSON' ) ;

Izpildiet failu “.js”:

mezglu indekss. js

Izvade rada kļūdu “Nevar atrast moduli” nepareiza moduļa nosaukuma dēļ:

Risinājums: ierakstiet pareizo moduļa nosaukumu

Iepriekš minētās kļūdas risinājums ir norādīt pareizo importētā moduļa reģistru (apakšējo vai augšējo), vienlaikus izmantojot “ prasīt () ” metode. Šajā scenārijā modulis “csvtojson” ir norādīts metodē “require()” pareizajā gadījumā:

konst csvtojson = pieprasīt ( 'csvtojson' ) ;

Palaidiet failu “.js” vēlreiz:

mezglu indekss. js

Tagad iepriekš minētā komanda neradīja kļūdu “Nevar atrast moduli”, jo importētās pakotnes gadījums ir tāds pats kā tās faktiskais nosaukums:

4. iemesls: nepareizs faila paplašinājums

' Nevar atrast moduli ' kļūda var rasties arī ' nepareizs faila paplašinājums ”. Līdzīgi kā nepareizs faila ceļš, tas notiek vietējo moduļu gadījumā. Piemēram, lokālais modulis tiek izveidots failā “.json” un tiek norādīts lietojumprogrammā Node.js ar paplašinājumu “.js”, tad tiek ģenerēta iepriekš minētā kļūda:

Šajā scenārijā “ myModule.js ”, kas norādīts sadaļā “ Nepareizs moduļa ceļš”, tiek ņemts par faila paraugu. Tam var piekļūt pašreizējā lietojumprogrammā Node.js, norādot tā paplašinājumu “.json” šādi:

konst valodas = pieprasīt ( './custom-modules/myModule.json' ) ;

Izpildiet failu “.js”:

mezglu indekss. js

Izvade rada kļūdu “Nevar atrast moduli”, jo failam “myModule” ir nepareizs faila paplašinājums:

Risinājums: ierakstiet pareizo faila paplašinājumu

Apspriežamās kļūdas risinājums ir ievadīt pareizo faila paplašinājumu, kurā ir izveidots lokālais modulis. Piemēram, mēs norādījām pareizo faila paplašinājumu failam “myModule.js”, lai novērstu kļūdu “Nevar atrast moduli”.

konst valodas = pieprasīt ( './custom-modules/myModule.js' ) ;

Palaidiet failu “.js”:

mezglu indekss. js

Tagad iepriekš minētā komanda ir veiksmīgi izpildīta, neparādot kļūdu “Nevar atrast moduli”:

5. iemesls: moduļa globāla instalēšana

Mezglu moduļus var instalēt lokāli (konkrētam projektam) vai globāli (visiem projektiem). Operētājsistēmā Linux , Ja nepieciešamais modulis ir instalēts globāli operētājsistēmā un tam piekļūst noteiktā projektā bez lokālās instalācijas, tad “ Nevar atrast moduli ” tiek ģenerēta kļūda.

Piemēram, “ mongodb ” modulis ir globāli instalēts Linux operētājsistēmā, izmantojot sudo npm instalējiet -g mongodb ” komandu un tai var piekļūt lokāli konkrētajā mezgla projektā:

konst mongodb = pieprasīt ( 'mongodb' )

Palaidiet failu “.js”:

mezglu indekss. js

Izvade ģenerē apspriesto kļūdu, jo “mongodb” nav lokāli instalēts pašreizējā Node projektā:

Risinājums: instalējiet moduli lokāli

Konstatētās kļūdas risinājums ir lokāli instalēt moduli konkrētam Node.js projektam operētājsistēmā, kuras pamatā ir Linux.

Šeit “ mongodb ” modulis tiek instalēts lokāli pašreizējā projektā ar instalēšanas komandas “npm” palīdzību:

npm instalējiet mongodb

Kad vietēja “mongodb” instalēšana ir pabeigta, importējiet to failā “.js” un izpildiet to:

mezglu indekss. js

Var redzēt, ka kļūda “Nevar atrast moduli” ir novērsta, lokāli instalējot moduli “mongodb” pašreizējam Node.js projektam:

Operētājsistēmā Windows, globālā un lokālā moduļa instalēšana neģenerē kļūdu “Nevar atrast moduli”.

6. iemesls: trūkst ievades faila

' Nevar atrast moduli ” kļūdu var ģenerēt arī tāpēc, ka moduļa failā “package.json” trūkst galvenā ievades faila. Katra moduļa galvenais ievades fails pēc noklusējuma ir fails “index.js”.

Pieņemsim, ka, ja lietotājs to nejauši noņem, tiks ģenerēta iepriekš sastaptā kļūda. Tas ir tāpēc, ka, importējot norādīto moduli, ' prasīt () ” metode pāriet uz šī moduļa mapi un meklē ievades punktu, ja tā neeksistē, tā nevar importēt šo moduli lietojumprogrammā Node.js.

Nepieciešamā moduļa ievades fails “index.js” atrodas tā mapju struktūrā. Tālāk redzamais fragments parāda “mysql” moduļa ievades failu:

Tagad iepriekš iezīmētais fails “index.js” tiek noņemts no mapes “mysql” un pēc tam importēts “mysql” modulis lietojumprogrammā Node.js:

konst mysql = pieprasīt ( 'mysql' )

Izpildiet failu “.js”:

mezglu indekss. js

Šeit izvade ģenerē kļūdu “Nevar atrast moduli”, jo trūkst moduļa “mysql” ievades faila:

Risinājums: vēlreiz instalējiet nepieciešamo moduli

Iepriekš radušās kļūdas risinājums ir izdzēst “ node_modules ” direktoriju un vēlreiz instalējiet vajadzīgo moduli. Šeit modulis “mysql” tiek atkārtoti instalēts pēc direktorija “node_modules” dzēšanas:

npm instalēt mysql

Pēc veiksmīgas “mysql” instalēšanas jaunais “ node_modules ' tiek automātiski ģenerēts direktorijs, kurā ir moduļa 'mysql' mapju struktūra, kurā atrodas 'index.js':

Tagad vēlreiz palaidiet failu “.js”:

mezglu indekss. js

Šeit izvade nerada kļūdu “Nevar atrast moduli”, jo pastāv “mysql” moduļa ievades fails ar nosaukumu “index.js”.

Ko darīt, ja joprojām pastāv kļūda “Nevar atrast moduli”?

Ja “ Nevar atrast moduli ” kļūda saglabājas pēc tās atrisināšanas ar kādu no iepriekš minētajiem risinājumiem, tad izdzēsiet node_modules ” mapi. Mape “node_modules” tiek automātiski ģenerēta, kad tiek instalēts trešās puses modulis. Tajā ir visas trešās puses pakotnes, no kurām ir atkarīgs Node.js projekts.

Turklāt ' pack-lock.json ” fails tiek automātiski ģenerēts arī tad, kad pakotne ir instalēta ar “npm”. Tas saglabā atkarību, kā arī apakšatkarību uzskaiti, no kurām ir atkarīga pakotne, kā arī to versijas. Ja pakotne ir instalēta ar “diju”, šis faila nosaukums ir “ dzija.slēdzene ”.

Risinājums: noņemiet mapi “node_modules” un failu “package-lock.json”.

Konstatētās kļūdas risinājums ir izdzēst mapi “node_modules” un failu “package-lock.json/yarn.lock” un vēlreiz instalēt nepieciešamo pakotni.

Operētājsistēmā Linux , iepriekš norādīto mapi un failus var izdzēst, izmantojot tālāk norādīto “ rm (noņemt)” komanda:

rm - rf node_modules pakotne - slēdzene. json //Dzēst mapi un failu

ls // Parādīt failu un direktorijus

Iepriekš minētajā komandā ' -r ' karogs dzēš norādīto mapi ' rekursīvi ', ieskaitot visus tā apakšdirektorijus un ' f 'karogs liek tulkam veikt šo uzdevumu' ar spēku ”:

Izvade parāda, ka mape “node_modules” un fails “package-lock.json/yarn.lock” ir pilnībā noņemti no pašreizējā Node.js projekta:

Operētājsistēmā Windows , lietotājs var izdzēst mapi “node_modules” un failu “package-lock.json/yarn.lock”, vienkārši nospiežot “ dzēst ” taustiņu vai izmantojot nolaižamās izvēlnes opciju “dzēst”.

Tas viss attiecas uz kļūdas “Nevar atrast moduli” novēršanu vietnē Node.js.

Secinājums

Lai atrisinātu ' Nevar atrast moduli ” kļūdu, “instalējiet vajadzīgo moduli”, “norādiet tā pareizo ceļu”, “ierakstiet pareizo reģistru metodē “require ()” un arī “ievadiet pareizo faila paplašinājumu”. Turklāt Node.js projektā var arī atrisināt moduli “instalēt lokāli”. Ja konkrētā kļūda joprojām pastāv, noņemiet mapi “node_modules”, failu “package-lock.json” un pēc tam vēlreiz instalējiet vajadzīgo moduli, izmantojot “npm/yarn”. Šajā ziņojumā ir apspriesti visi iespējamie iemesli, kā arī to risinājums, lai atrisinātu kļūdu “Nevar atrast moduli”, izmantojot Node.js.