Etter å ha hentet ned en modul fra GitHub og fulgt instruksjonene for å bygge den, prøver jeg å trekke den inn i et eksisterende prosjekt ved hjelp av:
> npm install ../faye
Dette ser ut til å fungere:
> npm list
/home/dave/src/server
└─┬ [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
Men Node.js finner ikke modulen:
> 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)
Jeg vil virkelig forstå hva som skjer her, men jeg vet ikke helt hvor jeg skal lete videre. Har du noen forslag?
Ved å bruke npm install
installeres modulen kun i den aktuelle katalogen (i en underkatalog kalt node_modules
). Ligger app.js under home/dave/src/server/
? Hvis ikke, og du vil bruke modulen fra en hvilken som helst katalog, må du installere den globalt ved hjelp av npm install -g
.
Jeg pleier å installere de fleste pakkene lokalt, slik at de sjekkes inn sammen med prosjektkoden.
Oppdatering (8/2019):
I dag kan du bruke filen package-lock.json, som genereres automatisk når npm endrer node_modules-katalogen. Derfor kan du la være å sjekke inn pakker, fordi package-lock.json
sporer de eksakte versjonene av node_modules du bruker for øyeblikket. For å installere pakker fra package-lock.json
i stedet for package.json
bruker du kommandoen npm ci
.
Oppdatering (3/2016):
Jeg har fått mye kjeft for svaret mitt, spesielt at jeg sjekker inn pakkene som koden min er avhengig av. For noen dager siden avpubliserte noen alle pakkene sine (https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.kq9s64clp), noe som ødela React, Babel og omtrent alt annet. Forhåpentligvis er det nå klart at hvis du har produksjonskode, kan du ikke stole på at NPM faktisk vedlikeholder avhengighetene dine for deg.
Jeg hadde et lignende problem. Å fjerne hele node_modules
-mappen og installere på nytt fungerte for meg:
rm -rf node_modules
npm install
Endre katalogen og pek på din nåværende prosjektmappe og deretter "npm install". .
Dette vil installere alle avhengigheter og moduler i prosjektmappen din.