Der Task Runner Explorer kann keine Aufgaben laden


101

Ich benutze VS2015 und Gulp. Ich öffne den Task Runner Explorer und drücke auf Aktualisieren. Dies wird im Protokoll angezeigt:

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)

Ich versuche also, cmd.exe /c gulp --tasks-simplein PowerShell im selben Verzeichnis zu arbeiten, und es funktioniert einwandfrei - es gibt eine Liste von Aufgaben zurück.

Ich kann meine SASS-bezogenen Aufgaben auch einwandfrei ausführen, daher bin ich mir nicht sicher, warum sich dies über SASS beschwert, wenn es über VS ausgeführt wird, jedoch nicht direkt über die Befehlszeile.

Antworten:


314

Ich hatte kürzlich das gleiche Problem bei der Migration von VS2013.

Wie Josh in seinem Kommentar hier feststellte , wird Visual Studio 2015 mit einer älteren Version von Node ausgeliefert. Falls Sie nicht mit der in Visual Studio integrierten Node-Version hängen bleiben möchten, können Sie festlegen, dass die bereits installierte Version verwendet werden soll.

  • Gehen Sie zu: Extras> Optionen> Projekte und Lösungen> Externe Web-Tools
  • Bestellen Sie so, dass $(PATH)oben ist$(DevEnvDir)\Extensions\Microsoft\Web Tools\External

Dies gilt auch für andere Tools wie Grunt, Bower und Gulp.

Diese Lösung von Mads Kristensen haben wir hier gefunden .

Für Visual Studio 2017 finden Sie die Einstellung unter
Tools > Options > Projects and Solutions > Web Package Management > External Web Tools


Ja, am Ende habe ich das Gleiche getan, aber vergessen, hierher zurückzukehren und einen Million-und-Eins-Kommentar hinzuzufügen. Vielen Dank!
Josh M.

1
Jemand bekommt diese Lösung in die Fehlermeldung! # grinst #
Iain M Norman

1
In VS2017 ist es Tools> Optionen> Projekte und Lösungen> Webpaketverwaltung> Externe Web-Tools
James Ellis-Jones

5
In VS2017 müssen Sie auch $ (PATH) über $ (VSINSTALLERDIR) \ Web \ External
John Pankowicz

1
In VS2017 musste ich auch $ (PATH) über. \ Node_modules \ .bin verschieben (im Grunde musste ich es nach oben verschieben.)
Doug

7

Es scheint, dass gulp-sass Node-sass an einem anderen Ort durchsucht. Hier ist eine vorübergehende Lösung.

  1. Erstellen Sie ein neues Verzeichnis mit dem Namen win32-ia32-11 in c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \

  2. Goto https://github.com/sass/node-sass-binaries und Download - win32-ia32-11_binding.node.

  3. Kopieren Sie die Datei win32-ia32-11_binding.node nach c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \ win32-ia32-11 \ und benennen Sie sie in binding.node um

Visual Studio Gulp - Task Runner


1
Ah ich sehe. Es scheint, dass ich die 64-Bit-Version aller meiner Knotenmodule installiert habe, aber sie muss in einem 32-Bit-Kontext ausgeführt werden, da ich in VS bin, das 32-Bit ist. Ich vermute. Und ich kann anscheinend keinen guten Weg finden, um die Installation von 32-Bit-Paketen zu erzwingen. Etwas überrascht, dass ich keine weiteren Informationen zu diesem Thema finden konnte. Es scheint, dass viele Leute dieses Problem wahrscheinlich haben würden.
Josh M.

Und ich konnte auch keinen guten Weg finden, NPM zu zwingen, die ia32-Version aller Pakete zu installieren. Ich habe versucht, eine .npmrcDatei mit der entsprechenden Konfigurationsoption zu erstellen , aber kein Glück. Selbst npm installwenn sie in einer 32-Bit-PS-Konsole ausgeführt werden, werden die 64-Bit-Versionen noch installiert.
Josh M.

Das ist verrückt. Ich habe stattdessen die 32-Bit-Version von Node installiert und dann alle meine Pakete neu installiert. Diesmal ist die 32-Bit-Version von Node-Sass installiert, aber die Bindung ist win32-ia32-14anstelle von win32-ia32-11- was aus irgendeinem Grund libsassgesucht wird ...
Josh M.

Übrigens, Ihre Lösung funktioniert, aber ich sehe sie als Bandaid - ich möchte nicht, dass dies ein Schritt ist, den andere Entwickler unternehmen müssen, wenn sie dies zum ersten Mal starten!
Josh M.


2

Ich habe alle oben genannten Lösungen ausprobiert, aber es funktioniert nicht und ich habe hier eine andere Lösung gefunden .

Sie müssen die Ausführung von Visual Studio mit Ihrer Node.js-Version erzwingen:

  1. Gehen Sie in Visual Studio 2015 zu Tools>Options
  2. Gehe zu Projects and Solutions>External Web Tools
  3. Fügen Sie den folgenden Pfad hinzu: C:\Program Files\nodejs


0

node-sass führt ein Installationsskript aus, um die erforderliche Binärdatei herunterzuladen. Wenn keine Umgebungsvariablen, .npmrc-Variablen oder Prozessargumente festgelegt sind, wird die Binärdatei unter Verwendung der aktuellen Prozessplattform, Architektur und Knoten-ABI-Version bestimmt. Wenn Sie die Knoteninstallation in einer Anwendung ausführen und dann versuchen, Node-Sass in einer Anwendung mit einer anderen Plattform / Architektur / ABI auszuführen, wurde die Binärdatei nicht heruntergeladen. Die Lösung besteht darin, die Binärdatei manuell herunterzuladen oder die Binärversion mithilfe einer Umgebungsvariablen (SASS_BINARY_NAME) oder einer .npmrc-Variablen (sass_binary_name) zu reparieren.

Sie können die Logik dafür in der Funktion getBinaryPath in node-sass \ lib \ extensions.js sehen

Siehe auch: Node Sass konnte keine Bindung für Ihre aktuelle Umgebung finden

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.