2014-09-18 19 views
48

Ho impostato la mia app Angular in modo che quando viene spinto su Heroku venga eseguito bower install. Tuttavia sto ricevendo errori a causa di problemi di versione.Impossibile trovare una versione adatta per installazione angolare - bower

Quando eseguo bower install localmente vengo presentato con questo:

Unable to find a suitable version for angular, please choose one:                   
    1) angular#1.2.16 which resolved to 1.2.16 and is required by angular-resource#1.2.16             
    2) angular#1.2.23 which resolved to 1.2.23 and is required by angular-cookies#1.2.23              
    3) angular#>= 1.0.8 which resolved to 1.2.25 and is required by angular-ui-router#0.2.10             
    4) angular#^1 which resolved to 1.2.25 and is required by angular-ui-codemirror#0.1.6             
    5) angular#~1.2.2 which resolved to 1.2.25 and is required by splitter#f5c2195050              
    6) angular#>=1.0.6 which resolved to 1.2.25 and is required by angular-elastic#2.4.0              
    7) angular#~1.2 which resolved to 1.2.25 and is required by angular-nanoscroller#0.2.1             
    8) angular#~1.2.9 which resolved to 1.2.25 and is required by angular-sockjs#0.0.1Prefix the choice with ! to persist it to bower.json 

? Answer:: 

Cosa devo fare con questo - ho effettivamente bisogno la versione 1.3 di angolare a causa della caratteristica di antirimbalzo

mio bower.json assomiglia a questo :

{ 
    "name": "myapp", 
    "version": "0.0.1", 
    "dependencies": { 
    "json3": "~3.3.1", 
    "es5-shim": "~3.1.0", 
    "angular-resource": "1.2.16", 
    "angular-sanitize": "1.2.16", 
    "angular-animate": "1.2.16", 
    "angular-ui-router": "~0.2.10", 
    "jquery": "~2.1.1", 
    "angular-ui-codemirror": "~0.1.6", 
    "splitter": "*", 
    "angular-cookies": "~1.2.23", 
    "angular-elastic": "~2.4.0", 
    "angular-local-storage": "~0.0.7", 
    "chance": "~0.5.6", 
    "nanoscroller": "~0.8.4", 
    "angular-nanoscroller": "~0.2.1", 
    "angular-sockjs": "~0.0.1" 
    } 
} 

risposta

71

Aggiorna le tue dipendenze angolari correnti a 1.3.xe aggiungi una risoluzione per angolare per sopprimere il prompt:

{ 
    "name": "myapp", 
    "version": "0.0.1", 
    "dependencies": { 
    "angular": "~1.3.x", 
    "angular-animate": "~1.3.x", 
    "angular-cookies": "~1.3.x", 
    "angular-resource": "~1.3.x", 
    "angular-sanitize": "~1.3.x", 
    "angular-ui-router": "~0.2.10", 
    "angular-ui-codemirror": "~0.1.6", 
    "angular-elastic": "~2.4.0", 
    "angular-local-storage": "~0.0.7", 
    "angular-nanoscroller": "~0.2.1", 
    "angular-sockjs": ">=0.0.1", 
    "json3": "~3.3.1", 
    "es5-shim": "~3.1.0", 
    "jquery": "~2.1.1", 
    "splitter": "*", 
    "chance": "~0.5.6", 
    "nanoscroller": "~0.8.4" 
    }, 
    "resolutions": { 
    "angular": "~1.3.x" 
    } 
} 
+0

Ci dispiace, ma puoi dirmi che ci sarà qualche problema con angular-ui-router (# 0.2.10) dal momento che usa un angolo più vecchio? Il mio dubbio è che posso andare ogni volta con l'ultima versione alla cieca? –

+0

@AsimKT Sei riuscito a trovare una strategia per affrontare questo tipo di problemi? Voglio dire che a volte è abbastanza frustrante perché scopri che stai utilizzando un modulo che dipende da una versione precedente di angolare e ce n'è un altro aggiunto da un altro dev in base alla versione successiva e sono entrambi molto importanti per i tuoi progetti !! Mi chiedo come altri team si occupino di questo problema !! – Willa

+0

No, non l'ho fatto. Penso che sia ok per andare con le nuove versioni se non si tratta di un importante cambiamento di versione. Ho bisogno di un plugin per il mio progetto che abbia questo problema. Ho usato l'ultima dipendenza e ha funzionato bene. Anche se ho sollevato un problema nel loro repo per contrastare la versione e lo hanno fatto. E hai ragione, affrontiamo tutti questi problemi !! –

17

Una spiegazione molto buona e la risoluzione del problema possono essere trovate qui:

bower-resolutions

basta copiare e incollare alcune linee qui per riferimento:

quando si specificano le dipendenze per la tua app tramite Bower, alcuni dei pacchetti potrebbero fare affidamento su diverse versioni della stessa libreria. Dovrai risolvere la versione delle librerie che la tua app vuole realmente. In altre parole, rompi il legame. Ma non vuoi romperlo ogni volta, quindi salva la tua scelta.

Durante l'installazione di bower, il processo di risoluzione è interattivo. Quando pergolato riconosce che ci sono due pacchetti che dipendono da un pacchetto in diverse versioni, sarà elencare tutte quelle versioni e chiedere:

enter image description here

La riga successiva nel prompt è molto comodo. Si legge:

enter image description here

Impressionante! Quindi, se digito! 2, invece, la mia scelta viene salvata in bower.json. In particolare, si aggiungerà una voce risoluzioni:

enter image description here

Ora, la prossima volta che si esegue l'installazione Bower, non c'è dubbio interattivo di quale versione che voglio perché ho già deciso che la brace per la mia app dovrebbe essere la versione 1.5.1.

9

Si consiglia di aggiornare pergolato (Funziona per me):

bower update 
+0

Ti piace questo +1, Smooth !! –

2

cancellare i tuoi /bower_components directory ed eseguire di nuovo .. bower install

Un hack, ma funziona comunque .. !!

1

È possibile eseguire il comando di installazione e quando viene richiesto di selezionare la versione, utilizzare (!) Il punto esclamativo come prefisso all'opzione. Ad esempio! 3 per la terza opzione. Questo verrà quindi aggiunto al file bower.json dell'applicazione e risolvere il conflitto.

Spero che questo aiuti.

Problemi correlati