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ń.

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


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ń


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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.