Task Runner Explorer non può caricare le attività


101

Sto usando VS2015 e Gulp. Apro Task Runner Explorer e premo Aggiorna, e questo viene visualizzato nel registro:

Failed to run "C:\Projects\Test\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
Error: `libsass` bindings not found in C:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-ia32-11\binding.node. Try reinstalling `node-sass`?
    at Object.sass.getBinaryPath (C:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\lib\extensions.js:148:11)
    at Object.<anonymous> (C:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\lib\index.js:16:36)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\Projects\Test\node_modules\gulp-sass\index.js:163:21)
    at Module._compile (module.js:456:26)

Quindi provo a eseguire cmd.exe /c gulp --tasks-simplein PowerShell, nella stessa directory, e funziona bene: restituisce un elenco di attività.

Sono anche in grado di eseguire correttamente le mie attività relative a SASS, quindi non sono sicuro del motivo per cui questo si lamenta di SASS quando viene eseguito tramite VS ma non direttamente sulla riga di comando.

Risposte:


314

Recentemente ho avuto lo stesso problema durante la migrazione da VS2013.

Come ha notato Josh nel suo commento qui, Visual Studio 2015 viene fornito con una versione precedente di Node. Nel caso in cui non desideri rimanere bloccato con qualsiasi versione di Node incorporata in Visual Studio, puoi dirgli di utilizzare la versione che hai già installato.

  • Vai a: Strumenti> Opzioni> Progetti e soluzioni> Strumenti Web esterni
  • Riordina in modo che $(PATH)sia sopra$(DevEnvDir)\Extensions\Microsoft\Web Tools\External

Questo vale anche per altri strumenti come Grunt, Bower e Gulp.

Ho trovato questa soluzione di Mads Kristensen qui .

Per Visual Studio 2017, possiamo trovare l'impostazione in
Tools > Options > Projects and Solutions > Web Package Management > External Web Tools


Sì, ho finito per fare la stessa cosa, ma ho dimenticato di tornare qui e aggiungere un commento da un milione e uno. Grazie!
Josh M.

1
Qualcuno inserisca questa soluzione nel messaggio di errore! # grins #
Iain M Norman

1
In VS2017 è Strumenti> Opzioni> Progetti e soluzioni> Gestione pacchetti Web> Strumenti Web esterni
James Ellis-Jones

5
In VS2017, devi anche mettere $ (PATH) sopra $ (VSINSTALLERDIR) \ Web \ External
John Pankowicz

1
In VS2017, ho anche dovuto spostare $ (PATH) sopra. \ Node_modules \ .bin (Fondamentalmente, ho dovuto spostarlo in alto.)
Doug

7

Sembra che gulp-sass cerchi node-sass in una posizione diversa. Ecco una soluzione temporanea.

  1. creare una nuova directory denominata win32-ia32-11 all'interno di c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \

  2. Vai a https://github.com/sass/node-sass-binaries e scarica win32-ia32-11_binding.node.

  3. Copia il file win32-ia32-11_binding.node in c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \ win32-ia32-11 \ e rinominalo in binding.node

Visual Studio Gulp - Task Runner


1
Ah, capisco. Sembra che abbia installato la versione a 64 bit di tutti i moduli del mio nodo, ma deve essere in esecuzione in un contesto a 32 bit poiché sono in VS che è a 32 bit. Suppongo. E non riesco a trovare un buon modo per forzare l'installazione di pacchetti a 32 bit. Un po 'sorpreso di non essere riuscito a trovare ulteriori informazioni su questo argomento, sembra che molte persone avrebbero probabilmente questo problema.
Josh M.

Inoltre, non sono riuscito a trovare un buon modo per forzare NPM a installare la versione ia32 di tutti i pacchetti. Ho provato a creare un .npmrcfile con l'opzione di configurazione appropriata, ma senza fortuna. Anche in esecuzione su npm installuna console PS a 32 bit, le versioni a 64 bit vengono ancora installate.
Josh M.

Questo è pazzesco. Ho installato invece la versione a 32 bit di node, quindi ho reinstallato tutti i miei pacchetti e questa volta è installata la versione a 32 bit di node-sass, ma l'associazione è win32-ia32-14invece di win32-ia32-11- che per qualche motivo è ciò che libsasssta cercando ...
Josh M.

A proposito, la tua soluzione funziona, ma la vedo come un cerotto: non voglio che questo sia un passo che altri sviluppatori devono compiere quando lo accendono per la prima volta!
Josh M.


2

Ho provato tutte le soluzioni di cui sopra ma non funziona e ho trovato un'altra soluzione qui .

Devi forzare l'esecuzione di Visual Studio con la tua versione di Node.js:

  1. Vai a Tools> Optionsin Visual Studio 2015
  2. Vai a Projects and Solutions>External Web Tools
  3. Aggiungi il seguente percorso: C:\Program Files\nodejs


0

node-sass esegue uno script di installazione per scaricare il binario richiesto. Se non ci sono variabili di ambiente, variabili .npmrc o argomenti di processo impostati, il binario viene determinato utilizzando la piattaforma di processo corrente, l'architettura e la versione ABI del nodo. Pertanto, se esegui node install in un'applicazione e poi provi a eseguire node-sass in un'applicazione con una piattaforma / architettura / ABI diversa, il binario non sarà stato scaricato. La soluzione è scaricare manualmente il binario o correggere la versione binaria utilizzando una variabile d'ambiente (SASS_BINARY_NAME) o una variabile .npmrc (sass_binary_name)

Puoi vedere la logica per questo nella funzione getBinaryPath in node-sass \ lib \ extensions.js

Vedi anche: Node Sass non è riuscito a trovare un'associazione per il tuo ambiente corrente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.