12

Ho alcune attività Gulp per eseguire le tipiche azioni clean, build, release per un sito Web. Niente di particolarmente insolito nella mia mente. (In realtà è molto simile a Aurelia dattiloscritto scheletro.)Errore durante l'esecuzione dell'attività di VS Runner explorer di Task 2015, ma non dal prompt di comando

La maggior parte della squadra fa di sviluppo front-end utilizzando Gulp da un prompt PowerShell/comando e l'editing con VS Codice/Sublime. Alcuni membri del team fanno lo stesso utilizzando Visual Studio 2015.

L'esecuzione del task build dal prompt dei comandi funziona correttamente, ma se viene eseguita da Task Runner Explorer di Visual Studio, ci dà un errore.

Tuttavia, l'esecuzione delle altre attività (ad esempio clean) funziona correttamente sia dal prompt dei comandi che da VS Task Runner Explorer.

È interessante notare che il Task Runner explorer emette anche una copia del processo invocato per eseguire l'attività. Se copio il comando esatto (vedi sotto) ed eseguo questo in un prompt dei comandi, lo fa non dare l'errore. Succede solo quando viene eseguito da Task Runner Explorer e solo quell'unica attività.

Ecco la linea di comando di attività e relativa uscita errore dal Task Runner Explorer:

cmd.exe /c gulp -b "D:\Development\xxxx\WebSite" --color --gulpfile "D:\Development\xxxx\WebSite\Gulpfile.js" build 
[20:40:42] Using gulpfile D:\Development\xxxx\WebSite\Gulpfile.js 
[20:40:42] Starting 'build'... 
[20:40:42] Starting 'clean'... 
[20:40:42] Finished 'clean' after 5.74 ms 
[20:40:42] Starting 'build-system'... 
[20:40:42] Starting 'build-html'... 
[20:40:42] Starting 'build-css'... 
[20:40:42] Finished 'build-css' after 31 ms 
[20:40:43] Finished 'build-html' after 162 ms 
D:\Development\xxxx\WebSite\node_modules\gulp-tsb\lib\builder.js:153 
     var newLastBuildVersion = new Map(); 
            ^
ReferenceError: Map is not defined 
    at Object.build (D:\Development\xxxx\WebSite\node_modules\gulp-tsb\lib\builder.js:153:39) 
    at Stream.<anonymous> (D:\Development\xxxx\WebSite\node_modules\gulp-tsb\lib\index.js:40:22) 
    at _end (D:\Development\xxxx\WebSite\node_modules\through\index.js:65:9) 
    at Stream.stream.end (D:\Development\xxxx\WebSite\node_modules\through\index.js:74:5) 
    at DestroyableTransform.onend (D:\Development\xxxx\WebSite\node_modules\readable-stream\lib\_stream_readable.js:545:10) 
    at DestroyableTransform.g (events.js:180:16) 
    at DestroyableTransform.emit (events.js:117:20) 
    at endReadableNT (D:\Development\xxxx\WebSite\node_modules\readable-stream\lib\_stream_readable.js:960:12) 
Process terminated with code 8. 
    at afterTick (D:\Development\xxxx\WebSite\node_modules\process-nextick-args\index.js:18:8) 
    at process._tickCallback (node.js:419:13) 

mio Google-Fu è venuto a mani vuote sul messaggio di errore/stack trace o ricerche correlate.

Cosa dà?

AGGIORNAMENTO: Come per @josh-graham, la versione del nodo richiamata da VS è elencata di seguito.

[10:12:48] Starting 'clean'... 
Version: v0.10.31 
[10:12:48] Finished 'clean' after 42 ms 

risposta

41

navi VS con una vecchia versione di Node.js e non lo fa indica se un aggiornamento arriverà in qualunque momento presto, anche con Update 2 coming out. Il tuo sistema probabilmente ha una versione più recente. Per risolvere questo problema in Visual Studio, è necessario dare la priorità al PERCORSO (presupponendo di avere un nodo sul PERCORSO). Basta trovare l'opzione "Web Tools esterni", e spostare $ (PATH) per la parte superiore dei seguenti ...

enter image description here

vedere questo per maggiori dettagli - Customize external web tools in Visual Studio 2015. Inoltre, mi dispiace per l'immagine, ma sembra essere il modo più semplice per spiegare il problema.

Dopo aver visto crescere questa risposta in popolarità per aiutare gli altri, ho continuato a indagare sul motivo per cui questo è ancora in qualche modo un problema.Ho guardato nella corrente Node.js Tools remarks for update 3 e ancora non si vede alcuna informazione in merito alla versione nella loro sintesi gli aggiornamenti come segue ...

  • Faster, better ES6 IntelliSense
  • More reliable debugging
  • Improved Unit Testing experiences (including Tape support)
  • .npm command in more project types

andare giù per la tana del coniglio un po 'per vedere se la loro versione esatta scelta è lampante (che non è) ho fatto find the following on their github repository ...

this.versions = {node: '0.10.0', v8: '3.14.5.8'}; 

questo potrebbe essere vero? Non sono sicuro, ma penso che non siano ancora presenti nella spedizione di VS con le versioni più recenti di Node.js.

+1

Ha-ha ... questo è successo in concomitanza! Grazie per la risposta chiara. Rivedretterò la risposta corretta. Inoltre, l'immagine è ancora più facile da seguire rispetto al post di Mads. – Jaans

+0

Per google, ho ricevuto questo errore: Node Sass non è riuscito a trovare un'associazione per l'ambiente corrente: Windows 32 bit con Node.js 5.x – dwbartz

+1

Questo vale anche per il nuovo Visual Studio 2017. –

1

Vedere se è possibile stampare la versione del nodo a cui viene eseguito il bombardamento di Visual Studio. È probabile che la versione di Node utilizzata da Visual Studio sia diversa da quella che si sta utilizzando nella console. La collezione Map sembra che è stato introdotto nel Nodo v4.0.0 https://nodejs.org/en/blog/release/v4.0.0/

Si dovrebbe essere in grado di accedere alla versione nodo utilizzando

console.log('Version: ' + process.version);

+0

Penso che potresti essere su qualcosa qui. La versione in uscita è 'v0.10.31'!? Questo nonostante abbia installato il nodo v4.2.6. Ora per VS per ottenere con il programma ... – Jaans

Problemi correlati