Kuidas lahendada "Ei leia moodulit" viga, kasutades Node.js?
Pärast GitHubist mooduli alla tõmbamist ja selle ehitamise juhiseid järgides proovin seda olemasolevasse projekti tõmmata, kasutades:
> npm install ../faye
See näib toimivat:
> npm list
/home/dave/src/server
└─┬ faye@0.7.1
├── cookiejar@1.3.0
├── hiredis@0.1.13
└── redis@0.7.1
Aga Node.js ei leia moodulit:
> node app.js
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'faye'
at Function._resolveFilename (module.js:334:11)
at Function._load (module.js:279:25)
at Module.require (module.js:357:17)
at require (module.js:368:17)
at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Array.0 (module.js:470:10)
Ma tõesti tahan aru saada, mis siin toimub, kuid ma'olen natuke segaduses, kust edasi otsida. On mingeid soovitusi?
552
3
Kasutades
npm install
installeerib mooduli ainult praegusesse kataloogi (alamkataloogi nimeganode_modules
). Kas app.js asub allhome/dave/src/server/
? Kui mitte ja te soovite moodulit kasutada ükskõik millisest kataloogist, peate selle globaalselt paigaldama, kasutadesnpm install -g
.Ma paigaldan tavaliselt enamiku pakettidest lokaalselt, et nad saaksid koos oma projektikoodiga sisse kontrollitud.
Update (8/2019):
Tänapäeval saab kasutada package-lock.json faili, mis genereeritakse automaatselt, kui npm muudab teie node_modules kataloogi. Seetõttu võite jätta pakettide kontrollimise ära, sest
package-lock.json
jälgib täpselt teie node_modules'i versioone, mida te'hetkel kasutate. Pakettide paigaldamisekspackage-lock.json
asemelpackage.json
kasutage käskunpm ci
.Update (3/2016):
Ma'olen saanud palju flaki oma vastuse eest, eriti selle eest, et ma kontrollin sisse pakette, millest minu kood sõltub. Paar päeva tagasi keegi avaldas kõik oma paketid (https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.kq9s64clp), mis rikkus Reacti, Babeli ja peaaegu kõike muud. Loodetavasti on nüüd selge, et kui teil on tootmiskood, siis ei saa't loota sellele, et NPM tegelikult hooldab teie sõltuvusi teie eest.
Mul oli väga sarnane probleem. Kogu kausta
node_modules
eemaldamine ja uuesti paigaldamine töötas minu jaoks:Muutke kataloogi ja osutage oma praegusele projektikaustale ning seejärel "npm install". .
See installib kõik sõltuvused ja moodulid teie projekti kausta.