Task Runner Explorer no puede cargar tareas

101

Estoy usando VS2015 y Gulp. Abro Task Runner Explorer y presiono actualizar, y esto aparece en el registro:

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)

Así que trato de ejecutar cmd.exe /c gulp --tasks-simplePowerShell, en el mismo directorio, y funciona bien: devuelve una lista de tareas.

También puedo ejecutar bien mis tareas relacionadas con SASS, por lo que no estoy seguro de por qué esto se queja de SASS cuando se ejecuta a través de VS pero no directamente en la línea de comando.

Josh M.
fuente

Respuestas:

314

Recientemente tuve el mismo problema al migrar desde VS2013.

Como señaló Josh en su comentario aquí, Visual Studio 2015 incluye una versión anterior de Node. En caso de que no quiera quedarse atascado con cualquier versión de Node que esté integrada en Visual Studio, puede indicarle que use la versión que ya instaló.

  • Vaya a: Herramientas> Opciones> Proyectos y soluciones> Herramientas web externas
  • Reordenar para que $(PATH)esté arriba$(DevEnvDir)\Extensions\Microsoft\Web Tools\External

Esto también se aplica a otras herramientas como Grunt, Bower y Gulp.

Encontré esta solución de Mads Kristensen aquí .

Para Visual Studio 2017, podemos encontrar la configuración en
Tools > Options > Projects and Solutions > Web Package Management > External Web Tools

M1Les
fuente
Sí, terminé haciendo lo mismo, pero olvidé volver aquí y agregar un comentario de un millón y uno. ¡Gracias!
Josh M.
1
¡Alguien obtenga esta solución en el mensaje de error! # sonríe #
Iain M Norman
1
En VS2017 es Herramientas> Opciones> Proyectos y soluciones> Gestión de paquetes web> Herramientas web externas
James Ellis-Jones
5
En VS2017, también debe poner $ (PATH) encima de $ (VSINSTALLERDIR) \ Web \ External
John Pankowicz
1
En VS2017, también tuve que mover $ (PATH) arriba. \ Node_modules \ .bin (Básicamente, tuve que moverlo a la parte superior).
Doug
7

Parece que gulp-sass busca node-sass en una ubicación diferente. Aquí tienes una solución temporal.

  1. cree un nuevo directorio llamado win32-ia32-11 dentro de c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \

  2. Vaya a https://github.com/sass/node-sass-binaries y descargue win32-ia32-11_binding.node.

  3. Copie el archivo win32-ia32-11_binding.node en c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \ win32-ia32-11 \ y cámbiele el nombre a binding.node

Visual Studio Gulp - Ejecutor de tareas

tansu
fuente
1
Ah, ya veo. Parece que instalé la versión de 64 bits de todos mis módulos de nodo, pero debe estar ejecutándose en un contexto de 32 bits ya que estoy en VS, que es de 32 bits. Supongo. Y parece que no puedo encontrar una buena manera de forzar la instalación de paquetes de 32 bits. Me sorprende un poco que no pude encontrar más información sobre este tema, parece que es probable que mucha gente tenga este problema.
Josh M.
Y tampoco pude encontrar una buena manera de obligar a NPM a instalar la versión ia32 de todos los paquetes. Intenté crear un .npmrcarchivo con la opción de configuración adecuada, pero no tuve suerte. Incluso ejecutándose npm installdentro de una consola PS de 32 bits, las versiones de 64 bits todavía se están instalando.
Josh M.
Esto es Loco. En su lugar, instalé la versión de 32 bits de node, y luego reinstalé todos mis paquetes y esta vez se instaló la versión de 32 bits de node-sass, pero el enlace es en win32-ia32-14lugar de win32-ia32-11, que por alguna razón es lo que libsassestá buscando ...
Josh M.
Por cierto, su solución funciona, pero la veo como una curita: ¡no quiero que este sea un paso que tengan que dar otros desarrolladores cuando lo pongan en marcha por primera vez!
Josh M.
1
Argh, eso es 0.10.31 32bit: nodejs.org/dist/v0.10.31/node-v0.10.31-x86.msi
Josh M.
2

Probé todas las soluciones anteriores, pero no funciona y encontré otra solución aquí .

Tienes que forzar la ejecución de Visual Studio con tu versión de Node.js:

  1. Vaya a Tools> Optionsen Visual Studio 2015
  2. Ir a Projects and Solutions>External Web Tools
  3. Agregue la siguiente ruta: C:\Program Files\nodejs
Alex Nguyen
fuente
0

node-sass ejecuta un script de instalación para descargar el binario requerido. Si no hay variables de entorno, variables .npmrc o argumentos de proceso establecidos, el binario se determina utilizando la plataforma de proceso actual, la arquitectura y la versión de ABI del nodo. Por lo tanto, si ejecuta la instalación de nodo en una aplicación y luego intenta ejecutar node-sass en una aplicación con una plataforma / arquitectura / ABI diferente, el binario no se habrá descargado. La solución es descargar manualmente el binario o arreglar la versión binaria usando una variable de entorno (SASS_BINARY_NAME) o una variable .npmrc (sass_binary_name)

Puede ver la lógica de esto en la función getBinaryPath en node-sass \ lib \ extensions.js

Consulte también: Node Sass no pudo encontrar un enlace para su entorno actual

Tevin
fuente