Task Runner Explorer에서 작업을로드 할 수 없습니다.


101

VS2015와 Gulp를 사용하고 있습니다. Task Runner Explorer를 열고 새로 고침을 누르면 로그에 다음과 같이 표시됩니다.

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)

따라서 cmd.exe /c gulp --tasks-simple동일한 디렉터리의 PowerShell에서 실행하려고하면 제대로 작동합니다. 작업 목록이 반환됩니다.

또한 SASS 관련 작업을 잘 실행할 수 있으므로 VS를 통해 실행되지만 명령 줄에서 직접 실행되지 않을 때 이것이 SASS에 대해 불평하는 이유를 잘 모르겠습니다.

답변:


314

최근 VS2013에서 마이그레이션하는 데 동일한 문제가 발생했습니다.

Josh가 여기 주석 에서 언급했듯이 Visual Studio 2015는 이전 버전의 Node.js와 함께 제공됩니다. Visual Studio에 빌드 된 Node 버전에 얽매이지 않으려면 이미 설치 한 버전을 사용하도록 지시 할 수 있습니다.

  • 이동 : 도구> 옵션> 프로젝트 및 솔루션> 외부 웹 도구
  • $(PATH)위가 되도록 재정렬$(DevEnvDir)\Extensions\Microsoft\Web Tools\External

이는 Grunt, Bower 및 Gulp와 같은 다른 도구에도 적용됩니다.

Mads Kristensen이이 솔루션을 여기 에서 찾았 습니다 .

Visual Studio 2017의 경우 설정은 다음에서 찾을 수 있습니다.
Tools > Options > Projects and Solutions > Web Package Management > External Web Tools


네, 결국 똑같은 일을했지만 여기로 돌아와서 백만 분의 1 코멘트를 추가하는 것을 잊었습니다. 감사!
Josh M.

1
누군가이 솔루션을 오류 메시지로 가져옵니다! # #을 웃는다
이안 M 노먼

1
VS2017에서는 도구> 옵션> 프로젝트 및 솔루션> 웹 패키지 관리> 외부 웹 도구
James Ellis-Jones

5
VS2017에서는 $ (PATH)를 $ (VSINSTALLERDIR) \ Web \ External 위에 넣어야합니다.
John Pankowicz 2017

1
VS2017에서는 $ (PATH)를. \ node_modules \ .bin 위로 이동해야했습니다 (기본적으로 맨 위로 이동해야했습니다.)
Doug

7

gulp-sass가 다른 위치에서 node-sass를 검색하는 것 같습니다. 다음은 임시 해결책입니다.

  1. c : \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \에 win32-ia32-11이라는 새 디렉토리를 만듭니다.

  2. 고토 https://github.com/sass/node-sass-binaries 및 다운로드는 Win32-ia32-11_binding.node.

  3. win32-ia32-11_binding.node 파일을 c : \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \ win32-ia32-11 \에 복사하고 이름을 binding.node로 바꿉니다.

Visual Studio Gulp-작업 실행기


1
아, 알겠습니다. 모든 노드 모듈의 64 비트 버전을 설치 한 것으로 보이지만 32 비트 인 VS에 있기 때문에 32 비트 컨텍스트에서 실행 중이어야합니다. 나는 추측한다. 그리고 32 비트 패키지를 강제로 설치하는 좋은 방법을 찾지 못하는 것 같습니다. 이 주제에 대해 더 많은 정보를 찾을 수 없다는 것에 놀랐습니다. 많은 사람들이이 문제를 겪을 것 같습니다.
Josh M.

또한 NPM이 모든 패키지의 ia32 버전을 설치하도록하는 좋은 방법을 찾을 수 없었습니다. .npmrc적절한 구성 옵션 으로 파일을 만들려고 시도 했지만 운이 없습니다. npm install32 비트 PS 콘솔 내에서 실행하더라도 64 비트 버전은 여전히 ​​설치 중입니다.
Josh M.

미친 짓이야. 대신 32 비트 버전의 노드를 설치 한 다음 모든 패키지를 다시 설치했고 이번에는 32 비트 버전의 node-sass가 설치되었지만 바인딩은 win32-ia32-14대신 win32-ia32-11-어떤 이유로 libsass찾고 있는 것이 ...
Josh M.

BTW 귀하의 솔루션은 작동하지만 반창고로 생각합니다. 다른 개발자가 처음으로 이것을 실행할 때 이것이 다른 개발자가 취해야하는 단계가되기를 원하지 않습니다!
Josh M.


2

위의 모든 솔루션을 시도했지만 작동하지 않고 여기 에서 다른 솔루션을 찾았 습니다 .

Visual Studio를 Node.js 버전으로 강제 실행해야합니다.

  1. Visual Studio 2015에서 Tools> Options로 이동합니다.
  2. 이동 Projects and Solutions>External Web Tools
  3. 다음 경로를 추가하십시오. C:\Program Files\nodejs


0

node-sass는 설치 스크립트를 실행하여 필요한 바이너리를 다운로드합니다. 환경 변수, .npmrc 변수 또는 프로세스 인수가 설정되지 않은 경우 현재 프로세스 플랫폼, 아키텍처 및 노드 ABI 버전을 사용하여 바이너리가 결정됩니다. 따라서 한 애플리케이션에서 노드 설치를 실행 한 다음 다른 플랫폼 / 아키텍처 / ABI가있는 애플리케이션에서 node-sass를 실행하려고하면 바이너리가 다운로드되지 않습니다. 해결책은 수동으로 바이너리를 다운로드하거나 환경 변수 (SASS_BINARY_NAME) 또는 .npmrc 변수 (sass_binary_name)를 사용하여 바이너리 버전을 수정하는 것입니다.

이에 대한 논리는 node-sass \ lib \ extensions.js의 getBinaryPath 함수에서 볼 수 있습니다.

참고 항목 : Node Sass가 현재 환경에 대한 바인딩을 찾을 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.