2013-08-06 26 views
36

Ho un problema con i generatori Yeoman. Si installano bene se eseguo "npm install [nome-generatore] -g". Tuttavia, quando provo a eseguire "yo [nome generatore] yeoman non sembra trovare il generatore. Né è elencato tra i miei altri generatori se ho appena eseguito" yo ". Ho provato un gruppo di generatori e il risultato è sempre la stessa.Perché i miei generatori Yeoman si installano nel posto sbagliato?

Dopo un po 'di' di indagine ho scoperto che il generatore scaricato viene posto in

/usr/local/lib/node_modules/ 

Ma i miei altri generatori sono posti in

/usr/local/lib/share/npm/lib/node_modules/ 

Ecco un'immagine di come appare sulla mia macchina http://i.imgur.com/DxWTYHb.png, sto eseguendo OSX in caso che conta. Sembra che ci sia qualcosa che non va, ma non riesco a capirlo.

Non sono sicuro se questo aiuta, ma birra medico e $ NODE_PATH niente ritorno mentre $ PATH ritorna:

-bash: 
/usr/local/share/npm/bin: 
/Users/marcus/.rvm/gems/ruby-2.0.0-p247/bin: 
/Users/marcus/.rvm/gems/[email protected]/bin: 
/Users/marcus/.rvm/rubies/ruby-2.0.0-p247/bin: 
/Users/marcus/.rvm/bin: 
/usr/bin: 
/bin: 
/usr/sbin: 
/sbin: 
/usr/local/bin: 
/usr/local/git/bin: No such file or directory 


UPDATE


ho provato quello che Eddie Monge Jr suggerito e ora il mio generatore angolare funziona bene. Tuttavia, quando ho installato un altro generatore (chrome-extension), yeoman insiste che non è installato/trovato.

Quando eseguo ls $ (NPM config ottenere prefisso)/lib/node_modules ottengo questo:

bower      generator-mocha 
generator-angular   grunt-cli 
generator-chrome-extension npm 
generator-karma   yo 

E Lista NPM-g restituisce questo (ho tagliato un sacco di cose generiche)

/usr/local/lib 
├─┬ [email protected] 
├─┬ [email protected] 
│ └─┬ [email protected] 
├─┬ [email protected] 
│ └─┬ [email protected] 
├─┬ [email protected] 
│ └─┬ [email protected] 
├─┬ [email protected] 
│ └─┬ [email protected] 
├─┬ [email protected] 
├─┬ [email protected] 
└─┬ [email protected] 

La parte strana per me è se corro yo --help ottengo una lista strana di generatori

[?] What would you like to do? 
    [ ] Run the Angular generator 
    [ ] Run the Foundation generator 
    [ ] Run the H5bp generator 
    [X] Run the Mocha generator 
    [ ] Run the Webapp generator 
    [ ] Run the Karma generator 
    [ ] Update your generators 
    [ ] Install a generator 
    [ ] Find some help 
    [ ] Get me out of here! 

risposta

50

Ho provato a installare Yeoman su un vm vaginale esatto32 di Ubuntu. Mi sono imbattuto nello stesso problema: Yeoman non ha trovato i generatori che ho installato, anche se non ci sono stati errori durante l'installazione di questi generatori. I file erano a posto e le autorizzazioni sembravano accettabili.

Le soluzioni di cui sopra non ha funzionato per me.

ho corse

yo doctor 

per vedere che cosa era sbagliato, e come si è scoperto, il seguente era il problema:

[Yeoman Doctor] Uh oh, I found potential errors on your machine 
--------------- 

[Error] NPM root value is not in your NODE_PATH 
    [info] 
    NODE_PATH = /usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript 
    NPM root = /home/vagrant/npm/lib/node_modules 

    [Fix] Append the NPM root value to your NODE_PATH variable 
    Add this line to your .bashrc 
     export NODE_PATH=$NODE_PATH:/home/vagrant/npm/lib/node_modules 
    Or run this command 
     echo "export NODE_PATH=$NODE_PATH:/home/vagrant/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc 

La correzione suggerita dal Yeoman Dottore ha lavorato come pubblicizzato.

+2

Come hai gestito [Yeoman Doctor]? Non riesco a capirlo. – anderssonma

+0

Contrassegnerò la risposta come risposta poiché sono abbastanza sicuro che il mio problema era simile. Ho rimosso NPM e aggiornato Node.JS alla versione più recente. Ho quindi installato nuovamente NPM utilizzando questo script SH [collegamento] (https://npmjs.org/install.sh). Lo script ha trovato e rimosso un paio di strani percorsi NPM e ora funziona correttamente. Saluti! – anderssonma

+5

per eseguire il dottore yeoman, è necessario 'individuare doctor.js' (con me, era un percorso che termina in' .../yo/scripts/doctor.js' e basta eseguirlo con il nodo. per eseguire yo dovevo ricominciare con 'npm cache clean' tra (dopo' rm -rf/usr/local/lib/node_modules/yo', prima di reinstallare yo.) –

1

Suoni come il tuo npm potrebbe essere fuori di testa. Verifica dove sono installati gli elementi: npm config get prefisso È quello in cui ti aspettavi che i pacchetti si installassero? È quello dove sono attualmente installati?

Per elencare che cosa è in là:

ls $(npm config get prefix)/lib/node_modules 

che elencherà i pacchetti NPM installati a livello globale.

npm list -g 

Elencherà le cose attualmente installate. Assicurati che i generatori siano elencati al livello più alto.

Per rimuovere la roba yo e ricominciare da capo:

npm remove -g yo generator-* yeoman-generator 
npm install -g yo generator-angular 

Questo dovrebbe sistemare le cose.

+0

Grazie per la tua risposta! Non ho accesso al mio computer di lavoro in questo momento, ma lo farò domani. – anderssonma

+0

Hmm il mio generatore angolare ora funziona, ho provato sia l'estensione chrome che il generatore backbone senza fortuna, comunque - Yeoman non sembra trovarlo. Ho aggiornato la mia domanda sopra. – anderssonma

+0

sì, da quando ho rimosso il file 'yo generator' posso' npm update' && 'npm -g update' senza avvisi di nuovo. Volevo controllare il flusso di lavoro dello yeoman. –

7

ho disinstallato Yeoman interamente, poi ri-installato

npm remove -g yo 
npm install -g yo 

Questo risolto il problema con manca generatori angolari.

24

Colgo questo problema e spero che possa aiutare qualcuno. Credo che l'aggiornamento di NPM abbia causato questo problema iniziale per me.

/usr/local/lib/node_modules 

Era il luogo di molti dei miei moduli in passato. Dal momento che l'aggiornamento del nodo ad un certo punto, la directory è diventato

/usr/local/share/npm/lib/node_modules 

Quando vorrei correre nuove installazioni, quali:

npm install -g grunt-cli 

ho da quando corro grunt dalla riga di comando non sarebbe 'trovare' è (questo perché non era nella mia nuova dir node_modules). L'ho installato nel miobash_profile:

export PATH=$PATH:/usr/local/share/npm/bin 

Ora io indico la nuova directory node_modules così tutti i nuovi moduli NPM installo trovare la posizione giusta:/usr/local/share/NPM/lib/node_modules

ma non yo

ho eseguito una which yo e il mio percorso era

/usr/local/bin/yo 

Questo binario stava indicando la vecchia installazione node_modules @

/usr/local/lib/node_modules 

La mia soluzione era quella di fare questo

rm /usr/local/bin/yo 
npm remove -g yo 

Il vecchio riferimento alla yo è andato sul serio, ora posso fare

npm install -g yo 

Questo lo aggiungerà alla nuova posizione node_modules

/usr/local/share/npm/lib/node_modules 

e ora il nuovo 'yo' fa riferimento il corretto node_modules base di installazione

source ~/.bash_profile 

allora possiamo vedere yo viene fatto riferimento dal dischetto corretto

which yo 
/usr/local/share/npm/bin/yo 

tutti i generatori di futuri sarà inserito nella corretta directory node_modules e yo sarà in grado di trovarli senza problemi!

+0

Suoni più o meno come l'errore che ho avuto. Ho provato ** npm rimuovere -g yo ** un paio di volte senza successo tuttavia. Quello che non ho fatto è stato quello di eseguire * * rm/usr/local/bin/yo **, non sono sicuro se ciò avrebbe risolto qualsiasi differenza però. Grazie! – anderssonma

+0

Questo lo ha fatto per me! Ho anche aggiunto un link simbolico a bash_profile per rendere 'yo 'lavoro.La seguente riga:' PATH = $ {PATH}: ~/.node/bin' e non dimenticare di riavviare il prompt per fare in modo che la modifica agisca. – nilsi

Problemi correlati