Task Runner Explorer không thể tải các tác vụ


101

Tôi đang sử dụng VS2015 và Gulp. Tôi mở Task Runner Explorer và nhấn refresh, và điều này sẽ hiển thị trong nhật ký:

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)

Vì vậy, tôi cố gắng chạy cmd.exe /c gulp --tasks-simpletrong PowerShell, trong cùng một thư mục, và nó hoạt động tốt - nó trả về một danh sách các tác vụ.

Tôi cũng có thể chạy các tác vụ liên quan đến SASS của mình tốt, vì vậy tôi không chắc tại sao điều này lại phàn nàn về SASS khi nó được chạy qua VS nhưng không trực tiếp trên dòng lệnh.

Câu trả lời:


314

Tôi đã gặp vấn đề tương tự khi di chuyển từ VS2013 gần đây.

Như Josh đã lưu ý trong nhận xét của mình ở đây Visual Studio 2015 đi kèm với phiên bản Node cũ hơn. Trong trường hợp bạn không muốn gặp khó khăn với bất kỳ phiên bản Node nào được tích hợp sẵn trong Visual Studio, bạn có thể yêu cầu nó sử dụng phiên bản bạn đã cài đặt.

  • Đi tới: Công cụ> Tùy chọn> Dự án và giải pháp> Công cụ web bên ngoài
  • Sắp xếp lại để $(PATH)ở trên$(DevEnvDir)\Extensions\Microsoft\Web Tools\External

Điều này cũng áp dụng cho các công cụ khác như Grunt, Bower và Gulp.

Tìm thấy giải pháp này bởi Mads Kristensen ở đây .

Đối với Visual Studio 2017, chúng tôi có thể tìm thấy cài đặt tại
Tools > Options > Projects and Solutions > Web Package Management > External Web Tools


Đúng là tôi đã làm điều tương tự nhưng quên quay lại đây và thêm nhận xét một triệu lẻ một. Cảm ơn!
Josh M.

1
Ai đó nhận được giải pháp này vào thông báo lỗi! # cười #
Iain M Norman

1
Trong VS2017 nó Tools> Options> Dự án và giải pháp> Package Management Web> External Web Công cụ
James Ellis-Jones

5
Trong VS2017, bạn cũng cần đặt $ (PATH) trên $ (VSINSTALLERDIR) \ Web \ Ngoài
John Pankowicz.

1
Trong VS2017, tôi cũng phải di chuyển $ (PATH) lên trên. \ Node_modules \ .bin (Về cơ bản, tôi phải di chuyển nó lên trên cùng.)
Doug

7

Có vẻ như gulp-sass tìm kiếm node-sass ở một vị trí khác. Đây là một giải pháp tạm thời.

  1. tạo một thư mục mới có tên win32-ia32-11 bên trong c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ nhà cung cấp \

  2. Goto https://github.com/sass/node-sass-binaries và tải xuống win32-ia32-11_binding.node.

  3. Sao chép tệp win32-ia32-11_binding.node sang c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ nhà cung cấp \ win32-ia32-11 \ và đổi tên nó thành bind.node

Visual Studio Gulp - Task Runner


1
Ah tôi thấy. Có vẻ như tôi đã cài đặt phiên bản 64-bit của tất cả các mô-đun nút của mình, nhưng nó phải chạy trong ngữ cảnh 32-bit vì tôi đang ở VS là 32-bit. Tôi đoán. Và tôi dường như không thể tìm thấy một cách tốt để buộc cài đặt các gói 32-bit. Khá ngạc nhiên khi tôi không thể tìm thêm thông tin về chủ đề này, có vẻ như rất nhiều người có thể gặp vấn đề này.
Josh M.

Và tôi cũng không thể tìm ra cách tốt để buộc NPM cài đặt phiên bản ia32 của tất cả các gói. Tôi đã thử tạo một .npmrctệp với tùy chọn cấu hình thích hợp, nhưng không may mắn. Ngay cả khi chạy npm installtrong bảng điều khiển PS 32 bit, các phiên bản 64 bit vẫn đang được cài đặt.
Josh M.

Điều này là điên. Thay vào đó, tôi đã cài đặt phiên bản 32 bit của nút, sau đó cài đặt lại tất cả các gói của mình và lần này phiên bản 32 bit của node-sass đã được cài đặt, nhưng win32-ia32-14thay vì ràng buộc win32-ia32-11- mà vì một số lý do là những gì libsassđang tìm kiếm ...
Josh M.

BTW giải pháp của bạn hoạt động nhưng tôi thấy nó giống như một chiếc khăn rằn - Tôi không muốn đây là bước mà các nhà phát triển khác phải thực hiện khi họ khởi động giải pháp này lần đầu tiên!
Josh M.

1
Argh, đó là 0,10.31 32bit: nodejs.org/dist/v0.10.31/node-v0.10.31-x86.msi
Josh M.

2

Tôi đã thử tất cả các giải pháp trên nhưng nó không hoạt động và tôi đã tìm thấy giải pháp khác ở đây .

Bạn phải buộc Visual Studio chạy với phiên bản Node.js của mình:

  1. Đi tới Tools> Optionstrong Visual Studio 2015
  2. Đi tới Projects and Solutions>External Web Tools
  3. Thêm đường dẫn sau: C:\Program Files\nodejs


0

node-sass chạy tập lệnh cài đặt để tải xuống tệp nhị phân cần thiết. Nếu không có biến môi trường, biến .npmrc hoặc đối số quy trình được đặt thì nhị phân được xác định bằng cách sử dụng nền tảng quy trình hiện tại, kiến ​​trúc và phiên bản Node ABI. Do đó, nếu bạn chạy cài đặt nút trong một ứng dụng và sau đó cố gắng chạy nút-sass trong một ứng dụng có nền tảng / kiến ​​trúc / ABI khác, tệp nhị phân sẽ không được tải xuống. Giải pháp là tải xuống tệp nhị phân theo cách thủ công hoặc sửa phiên bản nhị phân bằng cách sử dụng biến môi trường (SASS_BINARY_NAME) hoặc biến .npmrc (sass_binary_name)

Bạn có thể thấy logic cho điều này trong hàm getBinaryPath trong node-sass \ lib \ extensions.js

Xem thêm: Node Sass không thể tìm thấy ràng buộc cho môi trường hiện tại của bạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.