Task Runner Explorer tidak dapat memuat tugas

101

Saya menggunakan VS2015 dan Gulp. Saya membuka Task Runner Explorer dan menekan refresh, dan ini muncul di log:

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)

Jadi saya mencoba menjalankan cmd.exe /c gulp --tasks-simpledi PowerShell, di direktori yang sama, dan berfungsi dengan baik - ini mengembalikan daftar tugas.

Saya juga dapat menjalankan tugas terkait SASS saya dengan baik, jadi saya tidak yakin mengapa ini mengeluh tentang SASS ketika dijalankan melalui VS tetapi tidak langsung pada baris perintah.

Josh M.
sumber

Jawaban:

314

Saya mengalami masalah yang sama saat bermigrasi dari VS2013 baru-baru ini.

Seperti yang Josh catat dalam komentarnya di sini Visual Studio 2015 dikirimkan dengan versi Node. Jika Anda tidak ingin terjebak dengan versi Node apa pun yang dibangun ke dalam Visual Studio, Anda dapat memberitahukannya untuk menggunakan versi yang telah Anda instal.

  • Buka: Alat> Opsi> Proyek dan Solusi> Alat Web Eksternal
  • Susun ulang jadi yang $(PATH)di atas$(DevEnvDir)\Extensions\Microsoft\Web Tools\External

Ini juga berlaku untuk alat lain seperti Grunt, Bower, dan Gulp.

Solusi ini ditemukan oleh Mads Kristensen di sini .

Untuk Visual Studio 2017, kita dapat menemukan pengaturannya di
Tools > Options > Projects and Solutions > Web Package Management > External Web Tools

M1Les
sumber
Ya, saya akhirnya melakukan hal yang sama tetapi lupa untuk kembali ke sini dan menambahkan komentar satu juta satu. Terima kasih!
Josh M.
1
Seseorang memasukkan solusi ini ke dalam pesan kesalahan! # grins #
Iain M Norman
1
Di VS2017 itu Alat> Opsi> Proyek dan Solusi> Manajemen Paket Web> Alat Web Eksternal
James Ellis-Jones
5
Di VS2017, Anda juga harus meletakkan $ (PATH) di atas $ (VSINSTALLERDIR) \ Web \ External
John Pankowicz
1
Di VS2017, saya juga harus memindahkan $ (PATH) ke atas. \ Node_modules \ .bin (Pada dasarnya, saya harus memindahkannya ke atas.)
Doug
7

Tampaknya gulp-sass mencari node-sass di lokasi yang berbeda. Ini solusi sementara.

  1. buat direktori baru bernama win32-ia32-11 di dalam c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \

  2. Buka https://github.com/sass/node-sass-binaries dan unduh win32-ia32-11_binding.node.

  3. Salin file win32-ia32-11_binding.node ke c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \ win32-ia32-11 \ dan ganti namanya menjadi binding.node

Visual Studio Gulp - Pelari Tugas

tansu
sumber
1
Ah, begitu. Tampaknya saya telah menginstal versi 64-bit dari semua modul node saya, tetapi harus berjalan dalam konteks 32-bit karena saya menggunakan VS yaitu 32-bit. Saya kira. Dan sepertinya saya tidak dapat menemukan cara yang baik untuk memaksa instalasi paket 32-bit. Agak terkejut saya tidak dapat menemukan info lebih lanjut tentang topik ini, sepertinya banyak orang mungkin mengalami masalah ini.
Josh M.
Dan saya juga tidak dapat menemukan cara yang baik untuk memaksa NPM menginstal versi ia32 dari semua paket. Saya mencoba membuat .npmrcfile dengan opsi konfigurasi yang sesuai, tetapi tidak berhasil. Bahkan berjalan npm installdalam konsol PS 32-bit, versi 64-bit masih diinstal.
Josh M.
Ini gila. Saya menginstal node versi 32bit sebagai gantinya, dan kemudian menginstal ulang semua paket saya dan kali ini versi 32bit dari node-sass diinstal, tetapi pengikatannya win32-ia32-14bukan win32-ia32-11- yang karena alasan tertentu adalah apa libsassyang mencari ...
Josh M.
BTW solusi Anda berfungsi tetapi saya melihatnya sebagai bandaid - Saya tidak ingin ini menjadi langkah yang harus diambil oleh pengembang lain saat mereka meluncurkannya untuk pertama kalinya!
Josh M.
1
Ah, itu 0.10.31 32bit: nodejs.org/dist/v0.10.31/node-v0.10.31-x86.msi
Josh M.
2

Saya telah mencoba semua solusi di atas tetapi tidak berhasil dan saya menemukan solusi lain di sini .

Anda harus memaksa Visual Studio dijalankan dengan versi Node.js Anda:

  1. Masuk ke Tools> Optionsdi Visual Studio 2015
  2. Pergi ke Projects and Solutions>External Web Tools
  3. Tambahkan jalur berikut: C:\Program Files\nodejs
Alex Nguyen
sumber
0

node-sass menjalankan skrip instalasi untuk mengunduh biner yang diperlukan. Jika tidak ada variabel lingkungan, variabel .npmrc, atau argumen proses yang disetel, maka biner ditentukan dengan menggunakan platform proses saat ini, arsitektur, dan versi Node ABI. Oleh karena itu, jika Anda menjalankan pemasangan node dalam satu aplikasi dan kemudian mencoba menjalankan node-sass dalam aplikasi dengan platform / arsitektur / ABI yang berbeda, biner tidak akan diunduh. Solusinya adalah mengunduh biner secara manual atau memperbaiki versi biner menggunakan variabel lingkungan (SASS_BINARY_NAME) atau variabel .npmrc (sass_binary_name)

Anda dapat melihat logikanya untuk ini di fungsi getBinaryPath di node-sass \ lib \ extensions.js

Lihat juga: Node Sass tidak dapat menemukan pengikatan untuk lingkungan Anda saat ini

Tevin
sumber