Sulla base dei commenti da https://github.com/creationix/nvm/pull/97:
Durante l'installazione dei pacchetti con NPM utilizzando l'interruttore globale -g il pacchetto finisce nella directory appropriata (cioè .nvm/$ VERSION/lib/node_modules) , tuttavia il nodo non è in grado di richiederlo poiché in qualche modo non sta cercando sul suo prefisso.
Quindi, utilizzando npm install -g xxxxx
metterà i moduli nella posizione corretta per NVM, ma se si tenta di require
uno di loro nodo non riesce a trovare il modulo. Sto ancora giocando con questo e aggiornerò se trovo una soluzione.
Aggiornamento
dove viene messo NPM node_modules? (Vedi https://docs.npmjs.com/files/folders)
- installazione locale (default): mette roba in ./node_modules della radice pacchetto corrente.
- Installazione globale (con -g): inserisce elementi in/usr/local o ovunque sia installato il nodo.
- Installarlo localmente se si sta andando a
require()
esso.
- Installatelo globalmente se avete intenzione di eseguirlo sulla riga di comando.
- Se è necessario entrambi, installarlo in entrambe le posizioni oppure utilizzare
npm link
.
Quindi quello che ho fatto è stato eseguito npm init
(vedi http://npmjs.org/doc/init.html) nel mio dir progetti radice che ha generato package.json. Ora quando eseguo npm install xxxxx
crea una dir node_modules nella mia cartella di progetto (che aggiungo al mio .gitignore). Questo funziona per i moduli che richiedo nel mio codice.
Per i comandi come CoffeeScript, installo con npm install -g coffee-script
che lo inserisce nella directory corretta (.nvm/$ VERSION/lib/node_modules). Anche se non posso richiedere questi moduli (il collegamento npm dovrebbe risolvere questo problema) posso eseguire i comandi, ad esempio coffee
.
fonte
2012-04-06 14:13:20
Finalmente una buona risposta a questo, mi ha sbattuto la testa per un po '. –