2015-03-13 2 views
7

Quando costruisco qualsiasi applicazione Android con Cordova, non riesce conVisual Studio Cordova compilazione fallisce

TypeError: Cannot read property 'prepEnv' of undefined.

ho fatto tutta la risoluzione dei problemi e controllato le variabili d'ambiente (come da documentazione di MS)

Quello che ho trovato è che se chiamo bld\Debug\platforms\android\cordova\build --ant --debug dalla mia cartella del progetto, la build funziona.

Ma quando chiamo "C:\Users\<user>\AppData\Roaming\npm\\node_modules\vs-mda\vs-cli.cmd" build --platform Android --configuration Debug --projectDir . --rojectName Gappy --npmInstallDir C:\Users\<user>\AppData\Roaming\npm --language en-US --buildTarget AndroidDevice, la compilazione fallisce.

Uno dei passaggi del secondo metodo consiste nel chiamare il primo file batch.

Questo succede con VS2013 e VS2015. Versioni a 64 e 32 bit di Node.JS

Qualsiasi aiuto/idee?

+0

di poter postare il log di compilazione diagnostica. Vai a Strumenti -> Opzioni -> Progetti e soluzioni -> Crea ed esegui, modifica il progetto MSBuild "Genera il valore di output" in Diagnostica. Dopo aver ricostruito il progetto, dovrebbero esserci delle informazioni aggiuntive che potrebbero aiutarti a risolvere il problema. – MarkP

+0

Ho lo stesso errore con questa uscita: –

+0

> comando: D: \ cordova \ build.bat --debug --ant > D: \ cordova \ node_modules \ q \ q.js: 126 > throw e; >^ > TypeError: impossibile leggere la proprietà 'prepEnv' di undefined > su Object.module.exports.run (D: \ cordova \ lib \ build.js: 326: 19) > in D: \ cordova \ build : 36: 22 > a _fulfilled (D: \ cordova \ node_modules \ q \ q.js: 798: 54) > a self.promiseDispatch.done (D: \ cordova \ node_modules \ q \ q.js: 827: 30) > a Promise.promise.promiseDispatch (D: \ cordova \ node_modules \ q \ q.js: 760: 13) > a D: \ cordova \ node_modules \ q \ q.js: 574: 44 > a flush (D: \ cordova \ node_modules \ q \ q.js: 108: 17) > at process._tickCallback (node.js: 355: 11) –

risposta

15

ho notato che il file build è chiamato differnetly a seconda che il percorso per la soluzione contiene spazi:

1> ------ costruire opzioni di configurazione: 1> Comando di marcia: C: \ Progetti \ mobile \ AppSolutionName \ AppSolutionName \ BLD \ Debug \ piattaforme \ Android \ Cordova \ build.bat --debug --ant

1> ------ costruire opzioni di configurazione: --debug 1> comando di marcia : cmd "/ s/c" "C: \ Projects \ Mobile Apps \ AppSolutionName \ AppSolutionName \ bld \ Debug \ piattaforme \ android \ cordova \ build.bat" --debug --ant ""

Funziona se ci sono spazi e fallisce con "TypeError: Impossibile leggere la proprietà 'prepEnv' di undefined" se non ce ne sono. Non so se questo è specifico per il mio ambiente ma con gli spazi nel percorso che posso costruire ora.

+0

Wow, funziona! Mi hai appena sbloccato, grazie! Ho riempito questo bug: https://connect.microsoft.com/VisualStudio/feedback/details/1192337/tools-for-apache-cordova-ctp-3-1-cant-build-for-android –

+2

Mi ci sono voluti due ore per capirlo, ma non ho avuto il tempo di scavare oltre. Sono contento di poter essere d'aiuto e speriamo che venga risolto. –

+0

Sto contrassegnando questo come una soluzione fino a quando il bug è stato corretto alla connessione. –

0

In Mac OS X Yosemite:

Pulizia il progetto e la ricostruzione con sudo fisso per me.

On /path/to// progetto/piattaforme/android cartella/Cordova:

sudo ./clean 
sudo ./build --release