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
└─┬ [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
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?
Kasutades npm install
installeerib mooduli ainult praegusesse kataloogi (alamkataloogi nimega node_modules
). Kas app.js asub all home/dave/src/server/
? Kui mitte ja te soovite moodulit kasutada ükskõik millisest kataloogist, peate selle globaalselt paigaldama, kasutades npm 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 paigaldamiseks package-lock.json
asemel package.json
kasutage käsku npm 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:
rm -rf node_modules
npm install
Muutke kataloogi ja osutage oma praegusele projektikaustale ning seejärel "npm install". .
See installib kõik sõltuvused ja moodulid teie projekti kausta.