Task Runner Explorer ne peut pas charger les tâches


101

J'utilise VS2015 et Gulp. J'ouvre l'explorateur de Task Runner et j'appuie sur Actualiser, et cela apparaît dans le journal:

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)

J'essaie donc de l'exécuter cmd.exe /c gulp --tasks-simpledans PowerShell, dans le même répertoire, et cela fonctionne bien - cela renvoie une liste de tâches.

Je suis également capable d'exécuter très bien mes tâches liées à SASS, donc je ne sais pas pourquoi cela se plaint de SASS lorsqu'il est exécuté via VS mais pas directement sur la ligne de commande.

Réponses:


314

J'ai eu le même problème lors de la migration de VS2013 récemment.

Comme Josh l'a noté dans son commentaire ici, Visual Studio 2015 est livré avec une ancienne version de Node. Au cas où vous ne voudriez pas rester coincé avec la version de Node intégrée à Visual Studio, vous pouvez lui dire d'utiliser la version que vous avez déjà installée.

  • Accédez à: Outils> Options> Projets et solutions> Outils Web externes
  • Réorganiser pour que ce $(PATH)soit au-dessus$(DevEnvDir)\Extensions\Microsoft\Web Tools\External

Cela s'applique également à d'autres outils tels que Grunt, Bower et Gulp.

J'ai trouvé cette solution par Mads Kristensen ici .

Pour Visual Studio 2017, nous pouvons trouver le paramètre sur
Tools > Options > Projects and Solutions > Web Package Management > External Web Tools


Oui, j'ai fini par faire la même chose mais j'ai oublié de revenir ici et d'ajouter un commentaire d'un million et un. Merci!
Josh M.

1
Quelqu'un obtient cette solution dans le message d'erreur! # grins #
Iain M Norman

1
Dans VS2017, c'est Outils> Options> Projets et solutions> Gestion des packages Web> Outils Web externes
James Ellis-Jones

5
Dans VS2017, vous devez également mettre $ (PATH) au-dessus de $ (VSINSTALLERDIR) \ Web \ External
John Pankowicz

1
Dans VS2017, j'ai également dû déplacer $ (PATH) ci-dessus. \ Node_modules \ .bin (Fondamentalement, je devais le déplacer vers le haut.)
Doug

7

Il semble que gulp-sass recherche node-sass dans un endroit différent. Voici une solution temporaire.

  1. créez un nouveau répertoire nommé win32-ia32-11 dans c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \

  2. Allez sur https://github.com/sass/node-sass-binaries et téléchargez win32-ia32-11_binding.node.

  3. Copiez le fichier win32-ia32-11_binding.node dans c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \ win32-ia32-11 \ et renommez-le en binding.node

Visual Studio Gulp - Gestionnaire de tâches


1
Ah, je vois. Il semble que j'ai installé la version 64 bits de tous mes modules de nœuds, mais il doit fonctionner dans un contexte 32 bits puisque je suis dans VS qui est 32 bits. J'imagine. Et je n'arrive pas à trouver un bon moyen de forcer l'installation de packages 32 bits. Un peu surpris de ne pas pouvoir trouver plus d'informations sur ce sujet, il semble que beaucoup de gens auraient probablement ce problème.
Josh M.

Et je n'ai pas non plus trouvé un bon moyen de forcer NPM à installer la version ia32 de tous les packages. J'ai essayé de créer un .npmrcfichier avec l'option de configuration appropriée, mais pas de chance. Même fonctionnant npm installdans une console PS 32 bits, les versions 64 bits sont toujours en cours d'installation.
Josh M.

C'est fou. J'ai installé la version 32 bits de node à la place, puis réinstallé tous mes packages et cette fois la version 32 bits de node-sass est installée, mais la liaison est win32-ia32-14au lieu de win32-ia32-11- ce qui pour une raison quelconque est ce que je libsassrecherche ...
Josh M.

BTW, votre solution fonctionne, mais je la vois comme un pansement - je ne veux pas que ce soit une étape que les autres développeurs doivent franchir lorsqu'ils lancent cela pour la première fois!
Josh M.


2

J'ai essayé toutes les solutions ci-dessus mais cela ne fonctionne pas et j'ai trouvé une autre solution ici .

Vous devez forcer l'exécution de Visual Studio avec votre version Node.js:

  1. Accédez à Tools> Optionsdans Visual Studio 2015
  2. Aller à Projects and Solutions>External Web Tools
  3. Ajoutez le chemin suivant: C:\Program Files\nodejs


0

node-sass exécute un script d'installation pour télécharger le binaire requis. S'il n'y a pas de variables d'environnement, de variables .npmrc ou d'arguments de processus définis, le binaire est déterminé en utilisant la plate-forme de processus, l'architecture et la version ABI du nœud en cours. Par conséquent, si vous exécutez node install dans une application, puis essayez d'exécuter node-sass dans une application avec une plate-forme / architecture / ABI différente, le binaire n'aura pas été téléchargé. La solution est de télécharger manuellement le binaire ou de corriger la version binaire en utilisant une variable d'environnement (SASS_BINARY_NAME) ou une variable .npmrc (sass_binary_name)

Vous pouvez voir la logique pour cela dans la fonction getBinaryPath dans node-sass \ lib \ extensions.js

Voir aussi: Node Sass n'a pas pu trouver de liaison pour votre environnement actuel

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.