Task Runner Explorer nie może załadować zadań

101

Używam VS2015 i Gulp. Otwieram Task Runner Explorer i klikam przycisk odświeżania, co pojawia się w dzienniku:

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)

Próbuję więc uruchomić cmd.exe /c gulp --tasks-simplew PowerShell, w tym samym katalogu i działa dobrze - zwraca listę zadań.

Jestem również w stanie dobrze wykonywać zadania związane z SASS, więc nie jestem pewien, dlaczego narzeka na SASS, gdy jest uruchamiany przez VS, ale nie bezpośrednio w wierszu poleceń.

Josh M.
źródło

Odpowiedzi:

314

Niedawno miałem ten sam problem podczas migracji z VS2013.

Jak zauważył Josh w swoim komentarzu tutaj, Visual Studio 2015 jest dostarczany ze starszą wersją Node. Jeśli nie chcesz utknąć w dowolnej wersji Node wbudowanej w Visual Studio, możesz powiedzieć mu, aby używał wersji, którą już zainstalowałeś.

  • Przejdź do: Narzędzia> Opcje> Projekty i rozwiązania> Zewnętrzne narzędzia internetowe
  • Zmień kolejność, aby $(PATH)była powyżej$(DevEnvDir)\Extensions\Microsoft\Web Tools\External

Dotyczy to również innych narzędzi, takich jak Grunt, Bower i Gulp.

Znalazłem to rozwiązanie Madsa Kristensena tutaj .

W przypadku programu Visual Studio 2017 możemy znaleźć ustawienie w
Tools > Options > Projects and Solutions > Web Package Management > External Web Tools

M1Les
źródło
Tak, skończyło się na tym, że zrobiłem to samo, ale zapomniałem tu wrócić i dodać milion-jeden komentarz. Dzięki!
Josh M.
1
Ktoś dostał to rozwiązanie do komunikatu o błędzie! # grins #
Iain M Norman
1
W VS2017 jest to Narzędzia> Opcje> Projekty i rozwiązania> Zarządzanie pakietami sieciowymi> Zewnętrzne narzędzia internetowe
James Ellis-Jones
5
W VS2017 musisz również umieścić $ (PATH) powyżej $ (VSINSTALLERDIR) \ Web \ External
John Pankowicz
1
W VS2017 musiałem również przenieść $ (PATH) powyżej. \ Node_modules \ .bin (w zasadzie musiałem przenieść go na górę).
Doug
7

Wygląda na to, że gulp-sass szuka node-sass w innej lokalizacji. Oto tymczasowe rozwiązanie.

  1. utwórz nowy katalog o nazwie win32-ia32-11 wewnątrz c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \

  2. Idź do https://github.com/sass/node-sass-binaries i pobierz win32-ia32-11_binding.node.

  3. Skopiuj plik win32-ia32-11_binding.node do c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \ win32-ia32-11 \ i zmień jego nazwę na binding.node

Visual Studio Gulp - narzędzie do uruchamiania zadań

tansu
źródło
1
O, rozumiem. Wygląda na to, że zainstalowałem 64-bitową wersję wszystkich moich modułów węzłów, ale musi ona działać w kontekście 32-bitowym, ponieważ jestem w trybie VS, który jest 32-bitowy. Zgaduję. I nie wydaje mi się, aby znaleźć dobry sposób na wymuszenie instalacji pakietów 32-bitowych. Trochę zaskoczony, że nie mogłem znaleźć więcej informacji na ten temat, wydaje się, że wiele osób prawdopodobnie miałoby ten problem.
Josh M.,
Nie mogłem też znaleźć dobrego sposobu, aby zmusić NPM do zainstalowania wersji ia32 wszystkich pakietów. Próbowałem utworzyć .npmrcplik z odpowiednią opcją konfiguracji, ale bez powodzenia. Nawet działając npm installna 32-bitowej konsoli PS, wersje 64-bitowe są nadal instalowane.
Josh M.,
To jest szalone. Zamiast tego zainstalowałem 32-bitową wersję node, a następnie ponownie zainstalowałem wszystkie moje pakiety i tym razem 32-bitowa wersja node-sass jest zainstalowana, ale win32-ia32-14zamiast powiązania win32-ia32-11- co z jakiegoś powodu jest tym, czego libsassszuka ...
Josh M.
Swoją drogą, twoje rozwiązanie działa, ale postrzegam je jako pomoc - nie chcę, aby był to krok, który inni programiści muszą zrobić, gdy uruchamiają to po raz pierwszy!
Josh M.,
1
Argh, to jest 0.10.31 32-bitowe: nodejs.org/dist/v0.10.31/node-v0.10.31-x86.msi
Josh M.
2

Wypróbowałem wszystkie powyższe rozwiązania, ale to nie działa i znalazłem tutaj inne rozwiązanie .

Musisz wymusić uruchomienie programu Visual Studio z wersją Node.js:

  1. Przejdź do Tools> Optionsw programie Visual Studio 2015
  2. Przejdź do Projects and Solutions>External Web Tools
  3. Dodaj następującą ścieżkę: C:\Program Files\nodejs
Alex Nguyen
źródło
0

node-sass uruchamia skrypt instalacyjny, aby pobrać wymagany plik binarny. Jeśli nie ma ustawionych zmiennych środowiskowych, zmiennych .npmrc lub argumentów procesu, plik binarny jest określany przy użyciu bieżącej platformy procesu, architektury i wersji ABI węzła. Dlatego jeśli uruchomisz instalację węzła w jednej aplikacji, a następnie spróbujesz uruchomić node-sass w aplikacji z inną platformą / architekturą / ABI, plik binarny nie zostanie pobrany. Rozwiązaniem jest ręczne pobranie pliku binarnego lub naprawienie wersji binarnej za pomocą zmiennej środowiskowej (SASS_BINARY_NAME) lub zmiennej .npmrc (sass_binary_name)

Możesz zobaczyć logikę tego w funkcji getBinaryPath w node-sass \ lib \ extensions.js

Zobacz też: Node Sass nie mógł znaleźć powiązania dla twojego obecnego środowiska

Tevin
źródło