Kun olen hakenut moduulin GitHubista ja noudattanut ohjeita sen rakentamiseksi, yritän vetää sen olemassa olevaan projektiin käyttämällä:
> npm install ../faye
Tämä näyttää toimivan:
> npm list
/home/dave/src/server
└─┬ [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
Mutta Node.js ei löydä moduulia:
> 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)
Haluan todella ymmärtää, mitä tässä on meneillään, mutta olen hieman ymmälläni siitä, mistä etsiä seuraavaksi. Onko ehdotuksia?
Käyttämällä npm install
asennetaan moduuli vain nykyiseen hakemistoon (alihakemistoon nimeltä node_modules
). Sijaitseeko app.js osoitteessa home/dave/src/server/
? Jos ei ja haluat käyttää moduulia mistä tahansa hakemistosta, sinun on asennettava se globaalisti käyttämällä npm install -g
.
Asennan yleensä useimmat paketit paikallisesti, jotta ne saadaan tarkistettua projektikoodin mukana.
Päivitetty (8/2019):
Nykyään voit käyttää package-lock.json -tiedostoa, joka luodaan automaattisesti, kun npm muokkaa node_modules-hakemistoa. Siksi voit jättää pakettien tarkistamisen pois, koska package-lock.json
seuraa täsmällisesti node_modules-versioita, joita käytät tällä hetkellä. Voit asentaa paketteja package-lock.json
:sta package.json
:n sijaan komennolla npm ci
.
Päivitys (3/2016):
Olen'saanut paljon flakia vastauksestani, erityisesti siitä, että tarkistan paketit, joista koodini on riippuvainen. Muutama päivä sitten joku poisti kaikki pakettinsa (https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.kq9s64clp), mikä rikkoi Reactin, Babelin ja lähes kaiken muun. Toivottavasti nyt on selvää, että jos sinulla on tuotantokoodia, et voi luottaa siihen, että NPM ylläpitää riippuvuuksiasi puolestasi.
Minulla oli hyvin samanlainen ongelma. Koko node_modules
-kansion poistaminen ja uudelleenasennus toimi minulle:
rm -rf node_modules
npm install
Vaihda hakemisto ja osoita nykyinen projektikansiosi ja sitten "npm install". .
Tämä asentaa kaikki riippuvuudet ja moduulit projektikansioosi.