Kuidas lahendada Node.js-i abil viga 'Moodulit ei leia'?

Kuidas Lahendada Node Js I Abil Viga Moodulit Ei Leia



Nagu teisedki programmeerimiskeeled, ei pea Node.js rakenduse lähtekoodi väikesteks tükkideks purustama. See kirjutab kogu lähtekoodi .js-faili ja tõlk ei tekita probleeme. Väga keeruka Node.js rakenduse loomisel on aga soovitatav jagada lähtekood väiksemateks mooduliteks ja seejärel ühendada need ühtseks rakenduseks.

Kiire ülevaade

Mis on Node.js-i moodul?

Programmis Node.js on ' moodul ” vastab raamatukogule, mis loob rakendusega ühenduse selle konteksti alusel. See võimaldab arendajatel kapseldatud koodi vajaduse korral uuesti kasutada. See on jagatud kolme põhikategooriasse: 'sisseehitatud', 'kohalikud' ja 'kolmanda osapoole' moodulid. Need moodulid sisaldavad lisaks laia valikut meetodeid ja omadusi, mis teostavad vastavalt nende funktsioonidele määratud toiminguid.







Kuidas lahendada Node.js-i abil viga 'Moodulit ei leia'?

Selles jaotises on loetletud kõik võimalikud põhjused, mis tekitavad tõrketeate „Moodulit ei leia”, ning pakub ka toimivaid lahendusi selle lahendamiseks.



Põhjus 1: vajalik moodul pole installitud

Kõige tavalisem põhjus, miks ' Moodulit ei leitud 'Viga on selles, et nõutav' kolmanda osapoole moodul pole installitud ” praeguses Node.js projektis. Oletame, et impordime Node.js-i rakendusse kolmanda osapoole 'mysql' mooduli järgmisel viisil:



konst mysql = nõuda ( 'mysql' ) ;

Ülaltoodud käsus on ' nõua () ” meetod sisaldab praeguse node.js rakenduse jaoks moodulit „mysql”.





Käivitage fail '.js':

sõlme indeks. js

Allolev väljund genereerib käsitletud vea, kuna praegusesse Node.js projekti ei ole installitud moodulit 'mysql'.



Lahendus: installige nõutav moodul

Eespool käsitletud vea lahendus on vajaliku mooduli õige installimine, kasutades ' npm / lõng ” paketihaldur. Selle stsenaariumi jaoks installitakse vajalik 'mysql' moodul koos 'npm' installikäsuga:

npm installige mysql

Väljund näitab mooduli 'mysql' edukat installimist praegusesse Node.js projekti:

Nüüd käivitage fail '.js' uuesti:

sõlme indeks. js

Võib analüüsida, et ülaltoodud käsk täideti edukalt ilma veateadet 'Moodulit ei leia' genereerimata:

2. põhjus: vale moodulitee

Teine põhjus, miks ' Moodulit ei leitud viga on ' vale moodulitee ”. Tavaliselt juhtub see siis, kui kasutaja impordib kohaliku mooduli selle suhtelise tee kaudu. Oletame, et kasutaja loob konkreetsesse kausta kohandatud mooduli ja impordib selle rakendusse Node.js. Enne seda veenduge, et määratud tee on õige, vastasel juhul ilmneb käsitletav viga.

Näiteks kohalik/kasutaja määratud moodul nimega ' myModule ” asub kaustas „./custom-modules”:

Kasutaja impordib ülaltoodud 'myModule' praegusesse Node.js rakendusse selle suhtelise tee kaudu:

konst keeled = nõuda ( './myModule' ) ;

Käivitage fail „.js”:

sõlme indeks. js

On näha, et “myModule” vale tee tõttu tekib tõrge “Moodulit ei leia”:

Lahendus: määrake õige mooduli tee

Eelpool käsitletud vea lahenduseks on määrata mooduli õige või täpne tee, kus see asub. Siin läbisime õige tee 'myModule', et lahendada tõrke 'Moodulit ei leia':

konst keeled = nõuda ( './custom-modules/myModule' ) ;

Käivitage fail „.js”:

sõlme indeks. js

Võib täheldada, et allolev väljund ei näita tekkinud viga, kuna imporditud mooduli määratud tee on parandatud:

3. põhjus: vale mooduli nimi (tõstutundlik)

Moodulid on ' tõstutundlik ' Linuxis ja macOS-is, näiteks kui mooduli nimi on installitud suurtähtedega ja kasutaja impordib selle väiketähtedega, siis ' Moodulit ei leitud ” genereeritakse viga. Põhjus on selles, et tegelik mooduli nimi ja impordilause ei ühti.

Siin imporditakse installitud moodul 'csvtojson' 'suurtähtedega' rakendusse Node.js:

konst csvtojson = nõuda ( 'CSVTOJSON' ) ;

Käivitage fail '.js':

sõlme indeks. js

Väljund genereerib mooduli vale nime tõttu vea 'Moodulit ei leia':

Lahendus.: Tippige õige mooduli nimi

Ülaltoodud vea lahendus on määrata imporditud mooduli õige suurtäht (alumine või ülemine), kasutades ' nõua () ” meetod. Selle stsenaariumi korral on moodul 'csvtojson' määratud meetodis 'require()' õiges kirjas:

konst csvtojson = nõuda ( 'csvtojson' ) ;

Käivitage fail „.js” uuesti:

sõlme indeks. js

Nüüd ei tekitanud ülaltoodud käsk tõrketeadet 'Moodulit ei leia', kuna imporditud paketi juhtum on sama, mis selle tegelik nimi:

Põhjus 4: vale faililaiend

' Moodulit ei leitud ' viga võib ilmneda ka ' vale faililaiend ”. Sarnaselt vale failiteega juhtub see ka kohalike moodulite puhul. Näiteks luuakse kohalik moodul faili „.json” ja see määratakse rakenduses Node.js laiendiga „.js”, seejärel genereeritakse ülaltoodud konkreetne viga:

Selle stsenaariumi korral on ' myModule.js ' Vale mooduli tee' põhjuses näidatud ”, võetakse näidisfailina. Sellele pääseb juurde praeguses rakenduses Node.js, määrates selle laiendi „.json” järgmiselt:

konst keeled = nõuda ( './custom-modules/myModule.json' ) ;

Käivitage fail '.js':

sõlme indeks. js

Väljund genereerib tõrke 'Moodulit ei leia', kuna faili 'myModule' faililaiend on vale:

Lahendus: tippige õige faililaiend

Arutatud vea lahenduseks on sisestada õige faililaiend, milles kohalik moodul luuakse. Näiteks määrasime faili „myModule.js” õige faililaiendi, et lahendada tõrke „Moodulit ei leia”:

konst keeled = nõuda ( './custom-modules/myModule.js' ) ;

Käivitage fail „.js”:

sõlme indeks. js

Nüüd on ülaltoodud käsk edukalt täidetud, ilma et oleks kuvatud viga 'Moodulit ei leia':

Põhjus 5: mooduli globaalne installimine

Sõlmemooduleid saab installida lokaalselt (konkreetse projekti jaoks) või globaalselt (kõikide projektide jaoks). Linuxis , Kui vajalik moodul on installitud globaalselt operatsioonisüsteemi ja sellele pääseb juurde konkreetse projekti kaudu ilma kohaliku installita, siis ' Moodulit ei leitud ” genereeritakse viga.

Näiteks ' mongodb ” moodul on globaalselt installitud Linuxi operatsioonisüsteemi läbi „ sudo npm install -g mongodb ” käsk ja sellele pääseb juurde lokaalselt konkreetses sõlmeprojektis:

konst mongodb = nõuda ( 'mongodb' )

Käivitage fail „.js”:

sõlme indeks. js

Väljund genereerib arutatud vea, kuna 'mongodb' ei ole praeguses Node projektis kohapeal installitud:

Lahendus: installige moodul kohapeal

Ilmunud vea lahendus on mooduli lokaalne installimine konkreetse Node.js projekti jaoks Linuxi-põhisesse operatsioonisüsteemi.

Siin on ' mongodb ” moodul installitakse praegusesse projekti lokaalselt installikäsu “npm” abil:

npm installi mongodb

Kui 'mongodb' kohalik installimine on lõpetatud, importige see faili '.js' ja käivitage see:

sõlme indeks. js

On näha, et viga 'Moodulit ei leia' on lahendatud, installides praeguse Node.js projekti jaoks kohapeal mooduli 'mongodb':

Windowsis mooduli globaalne ja kohalik installimine ei tekita tõrget 'Moodulit ei leia'.

6. põhjus: sisestusfail puudub

' Moodulit ei leitud ” tõrge võib tekkida ka seetõttu, et mooduli paketis „package.json” puudub põhisisestusfail. Iga mooduli peamine sisestusfail on vaikimisi fail 'index.js'.

Oletame, et kui kasutaja eemaldab selle tahtmatult, siis genereeritakse ülaltoodud viga. Selle põhjuseks on asjaolu, et määratud mooduli importimisel kuvatakse ' nõua () ” meetod navigeerib selle mooduli kausta ja otsib sisestuspunkti, kui seda pole, ei saa ta seda moodulit Node.js rakendusse importida.

Vajaliku mooduli sisestusfail 'index.js' asub selle kaustastruktuuris. Allolev fragment näitab 'mysql' mooduli sisestusfaili:

Nüüd eemaldatakse ülaltoodud fail 'index.js' kaustast 'mysql' ja seejärel imporditakse 'mysql' moodul Node.js rakendusse:

konst mysql = nõuda ( 'mysql' )

Käivitage fail '.js':

sõlme indeks. js

Siin genereerib väljund vea 'Moodulit ei leia', kuna puudub mooduli 'mysql' sisestusfail:

Lahendus: installige nõutav moodul uuesti

Lahendus ülaltoodud veale on kustutada ' node_modules ” kataloogi ja installige vajalik moodul uuesti. Siin installitakse moodul 'mysql' uuesti pärast kataloogi 'node_modules' kustutamist:

npm installige mysql

Pärast 'mysql' edukat installimist ilmub uus ' node_modules ' kataloog genereeritakse automaatselt, mis sisaldab 'mysql' mooduli kaustastruktuuri, milles 'index.js' on:

Nüüd käivitage fail „.js” uuesti:

sõlme indeks. js

Siin ei tekita väljund viga 'Moodulit ei leia', kuna 'mysql' moodulis on sisestusfail nimega 'index.js'.

Mida teha, kui tõrge „Moodulit ei leia” ikka ei leia?

Kui ' Moodulit ei leitud tõrge püsib pärast selle lahendamist mõne ülaltoodud lahendusega, seejärel kustutage node_modules ” kausta. Kaust 'node_modules' genereeritakse automaatselt, kui installitakse kolmanda osapoole moodul. See sisaldab kõiki kolmanda osapoole pakette, millest Node.js projekt sõltub.

Veelgi enam, ' package-lock.json ” fail genereeritakse automaatselt ka siis, kui pakett on installitud koos „npm”-ga. See säilitab nii sõltuvuste kui ka alamsõltuvuste arvestust, millest pakett sõltub, ja nende versioonid. Kui pakett on installitud koos 'lõngaga', on selle faili nimi ' lõng.lukk ”.

Lahendus. Eemaldage kaust 'node_modules' ja fail 'packa-lock.json'.

Ilmunud tõrke lahenduseks on kaust “node_modules” ja fail “package-lock.json/yarn.lock” kustutamine ning vajaliku paketi uuesti installimine.

Linuxis , saab ülaltoodud kausta ja faile kustutada alltoodud ' rm (eemalda)” käsk:

rm - rf node_modules pakett - lukk. json //Kausta ja faili kustutamine

ls // Kuva failid ja kataloogid

Ülaltoodud käsus ' -r ' lipp kustutab määratud kausta ' rekursiivselt ', sealhulgas kõik selle alamkataloogid ja ' f ' lipp käsib tõlgil seda ülesannet täita ' jõuliselt ”:

Väljund näitab, et kaust “node_modules” ja fail “package-lock.json/yarn.lock” on praegusest projektist Node.js täielikult eemaldatud:

Windowsis , saab kasutaja kustutada kausta 'node_modules' ja faili 'package-lock.json/yarn.lock', vajutades lihtsalt ' kustutada ” klahvi või kasutades rippmenüü valikut „kustuta”.

See kõik puudutab Node.js-i vea „Moodulit ei leia” lahendamist.

Järeldus

Et lahendada ' Moodulit ei leitud ” tõrge, „installige vajalik moodul”, „määrake selle õige tee”, „sisestage meetodis „require()” õige suurtäht ja ka „tippige õige faililaiend”. Lisaks saab projektis Node.js lahendada mooduli lokaalse installimise. Kui konkreetne tõrge püsib, eemaldage kaust 'node_modules', fail 'package-lock.json' ja seejärel installige vajalik moodul uuesti 'npm/yarn' kaudu. Selles postituses on käsitletud kõiki võimalikke põhjuseid ja nende lahendust tõrke „Moodulit ei leia” lahendamiseks Node.js abil.