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.