Kaip išspręsti klaidą „Negaliu rasti modulio“ naudojant Node.js?

Kaip Isspresti Klaida Negaliu Rasti Modulio Naudojant Node Js



Kaip ir kitose programavimo kalbose, Node.js nereikia skaidyti programos šaltinio kodo į mažas dalis. Jis įrašo visą šaltinio kodą į „.js“ failą, o vertėjas nesukelia jokių problemų. Tačiau kuriant labai sudėtingą Node.js programą, rekomenduojama šaltinio kodą padalinti į mažesnius modulius ir sujungti juos į vientisą programą.

Greitas kontūras

Kas yra Node.js modulis?

„Node.js“ modulis “ atitinka biblioteką, kuri sukuria ryšį su programa pagal jos kontekstą. Tai leidžia kūrėjams pakartotinai naudoti įdėtą kodą, kai to reikia. Jis skirstomas į tris pagrindines kategorijas: „įtaisytieji“, „vietiniai“ ir „trečiosios šalies“ moduliai. Be to, šiuose moduliuose yra daug metodų ir savybių, kurios atlieka operacijas, nurodytas pagal jų funkcijas.







Kaip išspręsti klaidą „Negaliu rasti modulio“ naudojant Node.js?

Šiame skyriuje pateikiamos visos galimos priežastys, dėl kurių atsiranda klaida „Nepavyksta rasti modulio“, taip pat pateikiami veiksmingi sprendimai, kaip ją išspręsti:



1 priežastis: reikalingas modulis neįdiegtas

Dažniausia priežastis „ Nepavyko rasti modulio „Klaida ta, kad būtina“ trečiosios šalies modulis neįdiegtas “ dabartiniame Node.js projekte. Tarkime, trečiosios šalies „mysql“ modulį į Node.js programą importuojame tokiu būdu:



konst mysql = reikalauti ( 'mysql' ) ;

Aukščiau pateiktoje komandoje „ reikalauti () “ metodas apima „mysql“ modulį dabartinei node.js programai.





Vykdykite „.js“ failą:

mazgo indeksas. js

Toliau pateikta išvestis generuoja aptartą klaidą, nes „mysql“ modulis neįdiegtas dabartiniame Node.js projekte:



Sprendimas: Įdiekite reikiamą modulį

Aukščiau aptartos klaidos sprendimas yra tinkamai įdiegti reikiamą modulį, naudojant „ npm / verpalai “ paketų tvarkyklė. Šiam scenarijui reikalingas „mysql“ modulis įdiegiamas naudojant „npm“ diegimo komandą:

npm įdiegti mysql

Išvestis rodo sėkmingą „mysql“ modulio įdiegimą dabartiniame Node.js projekte:

Dabar dar kartą paleiskite „.js“ failą:

mazgo indeksas. js

Galima išanalizuoti, kad aukščiau pateikta komanda buvo sėkmingai įvykdyta nesugeneravus klaidos „Modulio nerasti“:

2 priežastis: neteisingas modulio kelias

Dar viena priežastis „ Nepavyko rasti modulio “ klaida yra “ neteisingas modulio kelias “. Paprastai tai atsitinka, kai vartotojas importuoja vietinį modulį per jo santykinį kelią. Tarkime, vartotojas sukuria pasirinktinį modulį į konkretų aplanką ir importuoja jį į Node.js programą. Prieš tai darydami įsitikinkite, kad nurodytas kelias yra teisingas, priešingu atveju bus susidurta su aptarta klaida.

Pavyzdžiui, vietinis / vartotojo nustatytas modulis pavadinimu ' myModule “ yra aplanke „./custom-modules“:

Vartotojas importuoja aukščiau paryškintą „myModule“ į dabartinę „Node.js“ programą per jos santykinį kelią:

konst kalbomis = reikalauti ( './myModule' ) ;

Paleiskite „.js“ failą:

mazgo indeksas. js

Matyti, kad dėl neteisingo „myModule“ kelio sugeneruojama klaida „Modulio negalima rasti“:

Sprendimas: nurodykite teisingą modulio kelią

Aukščiau aptartos klaidos sprendimas yra nurodyti teisingą arba tikslų modulio, kuriame jis yra, kelią. Čia mes perėjome teisingą kelią „myModule“, kad išspręstume klaidą „Modulio negalima rasti“:

konst kalbomis = reikalauti ( './custom-modules/myModule' ) ;

Paleiskite „.js“ failą:

mazgo indeksas. js

Galima pastebėti, kad toliau pateiktame išvestyje nerodoma klaida, nes buvo ištaisytas nurodytas importuoto modulio kelias:

3 priežastis: neteisingas modulio pavadinimas (skiriamos didžiosios ir mažosios raidės)

Moduliai yra ' didžiosios ir mažosios raidės “ Linux ir MacOS, pvz., jei modulio pavadinimas įdiegtas didžiosiomis raidėmis ir vartotojas jį importuoja mažosiomis raidėmis, tada „ Nepavyko rasti modulio “ bus sugeneruota klaida. Taip yra todėl, kad tikrasis modulio pavadinimas ir importavimo teiginys nesutampa.

Čia įdiegtas „csvtojson“ modulis importuojamas „didžiosiomis raidėmis“ į Node.js programą:

konst csvtojson = reikalauti ( „CSVTOJSON“ ) ;

Vykdykite „.js“ failą:

mazgo indeksas. js

Išvestis generuoja klaidą „Negaliu rasti modulio“ dėl neteisingo modulio pavadinimo:

Sprendimas: įveskite teisingą modulio pavadinimą

Aukščiau nurodytos klaidos sprendimas yra nurodyti teisingą importuoto modulio didžiąją ir mažąją raidę, naudojant „ reikalauti () “ metodas. Šiame scenarijuje „csvtojson“ modulis nurodytas „require()“ metodu teisingu atveju:

konst csvtojson = reikalauti ( 'csvtojson' ) ;

Dar kartą paleiskite „.js“ failą:

mazgo indeksas. js

Dabar aukščiau pateikta komanda nesukūrė klaidos „Negaliu rasti modulio“, nes importuoto paketo atvejis yra toks pat kaip tikrasis jo pavadinimas:

4 priežastis: neteisingas failo plėtinys

Nepavyko rasti modulio “ klaida taip pat gali atsirasti dėl „ neteisingas failo plėtinys “. Panašiai kaip neteisingas failo kelias, tai atsitinka vietinių modulių atveju. Pavyzdžiui, vietinis modulis sukuriamas „.json“ faile ir nurodomas Node.js programoje su plėtiniu „.js“, tada sugeneruojama aukščiau nurodyta klaida:

Pagal šį scenarijų „ myModule.js “, parodyta priežastyje „Neteisingas modulio kelias“, yra pavyzdinis failas. Jis pasiekiamas dabartinėje „Node.js“ programoje nurodant plėtinį „.json“ taip:

konst kalbomis = reikalauti ( './custom-modules/myModule.json' ) ;

Vykdykite „.js“ failą:

mazgo indeksas. js

Išvestis generuoja klaidą „Negaliu rasti modulio“ dėl neteisingo „myModule“ failo plėtinio:

Sprendimas: įveskite teisingą failo plėtinį

Aptartos klaidos sprendimas yra įvesti teisingą failo plėtinį, kuriame sukurtas vietinis modulis. Pavyzdžiui, nurodėme teisingą „myModule.js“ failo plėtinį, kad išspręstume klaidą „Modulio negalima rasti“:

konst kalbomis = reikalauti ( './custom-modules/myModule.js' ) ;

Paleiskite „.js“ failą:

mazgo indeksas. js

Dabar aukščiau pateikta komanda buvo sėkmingai įvykdyta, nerodant klaidos „Modulio negalima rasti“:

5 priežastis: visuotinis modulio įdiegimas

Mazgo moduliai gali būti diegiami lokaliai (konkrečiam projektui) arba globaliai (visiems projektams). Linux sistemoje , Jei reikalingas modulis yra įdiegtas visuotinai operacinėje sistemoje ir pasiekiamas konkrečiame projekte be vietinio diegimo, tada „ Nepavyko rasti modulio “ sugeneruojama klaida.

Pavyzdžiui, „ mongodb “ modulis yra visuotinai įdiegtas į „Linux“ operacinę sistemą per „ sudo npm install -g mongodb ” komandą ir pasiekiama lokaliai konkrečiame mazgo projekte:

konst mongodb = reikalauti ( 'mongodb' )

Paleiskite „.js“ failą:

mazgo indeksas. js

Išvestis generuoja aptartą klaidą, nes „mongodb“ nėra įdiegtas vietoje dabartiniame mazgo projekte:

Sprendimas: įdiekite modulį vietoje

Aptiktos klaidos sprendimas yra įdiegti modulį, skirtą konkrečiam Node.js projektui Linux pagrindu veikiančioje operacinėje sistemoje.

Čia „ mongodb “ modulis yra įdiegtas vietoje dabartiniame projekte, naudojant „npm“ diegimo komandą:

npm įdiegti mongodb

Kai baigsite vietinį „mongodb“ diegimą, importuokite jį į „.js“ failą ir paleiskite:

mazgo indeksas. js

Galima pastebėti, kad klaida „Nepavyko rasti modulio“ buvo išspręsta įdiegus „mongodb“ modulį vietoje dabartiniam Node.js projektui:

„Windows“ visuotinis ir vietinis modulio įdiegimas nesukelia klaidos „Modulio negalima rasti“.

6 priežastis: trūksta įvesties failo

Nepavyko rasti modulio “ klaida taip pat gali būti sugeneruota, nes trūksta pagrindinio įvesties failo modulio „package.json“. Pagal numatytuosius nustatymus pagrindinis kiekvieno modulio įvesties failas yra „index.js“.

Tarkime, jei vartotojas jį pašalins netyčia, bus sugeneruota aukščiau pateikta klaida. Taip yra todėl, kad importuojant nurodytą modulį „ reikalauti () “ metodas pereina į to modulio aplanką ir ieško įvesties taško, jei jo nėra, tada jis negali importuoti to modulio į Node.js programą.

Reikalingo modulio įvesties failas „index.js“ yra jo aplanko struktūroje. Toliau pateiktame fragmente rodomas „mysql“ modulio įvesties failas:

Dabar aukščiau paryškintas „index.js“ failas pašalinamas iš aplanko „mysql“, o tada importuojamas „mysql“ modulis į „Node.js“ programą:

konst mysql = reikalauti ( 'mysql' )

Vykdykite „.js“ failą:

mazgo indeksas. js

Čia išvestis generuoja klaidą „Negaliu rasti modulio“, nes trūksta „mysql“ modulio įvesties failo:

Sprendimas: dar kartą įdiekite reikiamą modulį

Aukščiau aptiktos klaidos sprendimas yra ištrinti „ mazgų_moduliai ” katalogą ir dar kartą įdiekite reikiamą modulį. Čia „mysql“ modulis vėl įdiegiamas ištrynus katalogą „node_modules“:

npm įdiegti mysql

Sėkmingai įdiegus „mysql“, naujasis „ mazgų_moduliai “ katalogas automatiškai sugeneruojamas, kuriame yra „mysql“ modulio, kuriame yra „index.js“, aplanko struktūra:

Dabar dar kartą paleiskite „.js“ failą:

mazgo indeksas. js

Čia išvestis nesukuria jokios klaidos „Modulio negalima rasti“, nes egzistuoja „mysql“ modulio įvesties failas pavadinimu „index.js“:

Ką daryti, jei klaida „Negaliu rasti modulio“ vis tiek išlieka?

Jei „ Nepavyko rasti modulio “ klaida išlieka ją išsprendus bet kuriuo iš aukščiau pateiktų sprendimų, tada ištrinkite „ mazgų_moduliai “ aplanką. Aplankas „node_modules“ automatiškai sugeneruojamas, kai įdiegiamas trečiosios šalies modulis. Jame yra visi trečiųjų šalių paketai, nuo kurių priklauso Node.js projektas.

Be to, „ package-lock.json “ failas taip pat automatiškai sugeneruojamas, kai įdiegiamas paketas su „npm“. Jis saugo priklausomybių ir antrinių priklausomybių, nuo kurių priklauso paketas, ir jų versijų įrašus. Jei paketas įdiegtas su „verpalais“, šis failo pavadinimas yra „ verpalai.užraktas “.

Sprendimas: pašalinkite aplanką „node_modules“ ir failą „package-lock.json“.

Aptiktos klaidos sprendimas yra ištrinti aplanką „node_modules“ ir failą „package-lock.json/yarn.lock“ ir dar kartą įdiegti reikiamą paketą.

Linux sistemoje , aukščiau nurodytą aplanką ir failus galima ištrinti naudojant toliau nurodytą ' rm (pašalinti)“ komanda:

rm - rf node_modules paketą - užraktas. json //Ištrinti aplanką ir failą

ls // Rodyti failą ir katalogus

Aukščiau pateiktoje komandoje „ -r ' vėliavėlė ištrina nurodytą aplanką ' rekursyviai “, įskaitant visus jo pakatalogius ir „ f “ vėliavėlė nurodo vertėjui atlikti šią užduotį “ jėga “:

Išvestis rodo, kad aplankas „node_modules“ ir failas „package-lock.json/yarn.lock“ buvo visiškai pašalinti iš dabartinio Node.js projekto:

„Windows“ sistemoje , vartotojas gali ištrinti aplanką „node_modules“ ir „package-lock.json/yarn.lock“ failą tiesiog paspausdamas „ Ištrinti “ arba naudodami išskleidžiamojo meniu parinktį „Ištrinti“.

Tai viskas apie klaidos „Negaliu rasti modulio“ sprendimą Node.js.

Išvada

Norėdami išspręsti „ Nepavyko rasti modulio “ klaida, „įdiekite reikiamą modulį“, „nurodykite teisingą jo kelią“, „įveskite teisingą didžiąją ir mažąją raidę naudodami metodą „reikalauti ()“, taip pat „įveskite teisingą failo plėtinį“. Be to, projekte Node.js taip pat galima „įdiegti modulį vietoje“. Jei konkreti klaida išlieka, pašalinkite aplanką „node_modules“, failą „package-lock.json“ ir vėl įdiekite reikiamą modulį naudodami „npm/yarn“. Šiame įraše buvo aptartos visos galimos priežastys ir jų sprendimas, kaip išspręsti klaidą „Modulio negalima rasti“ naudojant Node.js.