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関連のタスクを問題なく実行することもできるので、VSSを介して実行されているが、コマンドラインでは直接実行されていないときに、なぜこれがSASSに問題があるのか​​わかりません。

回答:


314

最近、VS2013からの移行で同じ問題が発生しました。

Joshがコメント述べたように、Visual Studio 2015には古いバージョンのNodeが同梱されています。Visual Studioに組み込まれているNodeのどのバージョンでも行きたくない場合は、インストール済みのバージョンを使用するように指示できます。

  • 移動:ツール>オプション>プロジェクトとソリューション>外部Webツール
  • $(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


はい、結局同じことをしましたが、ここに戻って100万分の1のコメントを追加するのを忘れていました。ありがとう!
ジョシュM.

1
誰かがこの解決策をエラーメッセージに入れます!#grins#
Iain M Norman

1
VS2017では、ツール>オプション>プロジェクトとソリューション> Webパッケージ管理>外部Webツール
James Ellis-Jones

5
VS2017では、$(PATH)を$(VSINSTALLERDIR)\ Web \ External上に配置する必要もあります
John Pankowicz

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.

また、すべてのパッケージのia32バージョンをNPMに強制的にインストールさせる良い方法も見つかりませんでした。.npmrc適切な構成オプションを使用してファイルを作成しようとしましたが、うまくいきませんでした。npm install32ビットPSコンソール内で実行されている場合でも、64ビットバージョンはまだインストールされています。
ジョシュM.

狂ってる。代わりに32ビットバージョンのノードをインストールしてから、すべてのパッケージを再インストールし、今回は32ビットバージョンのnode-sassをインストールしましたが、バインディングではwin32-ia32-14なくwin32-ia32-11-何らかの理由libsassで探しているものが...
Josh M.

ところであなたのソリューションは機能しますが、私はそれを絆創膏と見なします-これが他の開発者が初めてこれを起動するときに取るべきステップにしたくありません!
Josh M.

1
ああ、それは0.10.31 32ビットです:nodejs.org/dist/v0.10.31/node-v0.10.31-x86.msi
Josh M.

2

上記の解決策をすべて試しましたが、うまくいかず、ここに別の解決策が見つかりまし

Node.jsバージョンでVisual Studioを強制的に実行する必要があります。

  1. Tools> Optionsに移動Visual Studio 2015
  2. 移動Projects and Solutions>External Web Tools
  3. 次のパスを追加します。 C:\Program Files\nodejs


0

node-sassはインストールスクリプトを実行して、必要なバイナリをダウンロードします。環境変数、.npmrc変数、またはプロセス引数が設定されていない場合、バイナリは現在のプロセスプラットフォーム、アーキテクチャ、およびノー​​ドABIバージョンを使用して決定されます。したがって、1つのアプリケーションでnode installを実行してから、異なるプラットフォーム/アーキテクチャ/ 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.