Trình biên dịch LESS CSS trở về trống


8

Tôi thậm chí không chắc chắn nơi để bắt đầu gỡ lỗi này. Nhiều tháng trước, tôi có thể vui vẻ biên dịch CSS từ các tệp LESS của mình. Hôm nay, tôi chạy một trong hai recess --compile test.lesshoặc lessc test.lessvà tôi chỉ nhận được một sản lượng trống. Không có lỗi. lessc test.less > test.csschỉ cần tạo một tập tin trống. Makefile twitter-bootstrap cho các lỗi LESS, tất cả đều không hữu ích.

Tôi đang sử dụng đơn giản sau đây test.lessđể gỡ lỗi:

@color: #4D926F;
#header {
  color: @color;
}
h2 {
   color: @color;
}

Tôi đang sử dụng Ubuntu 12.10, tôi đã từng sudo apt-get install node-lesscung cấp lesscvà cài đặt hốc từ các hướng dẫn trên github (npm). Cả hai chỉ cho tôi đầu ra trống.

Thậm chí lessc --versionkhông trả lại gì cả.

 which lessc

trình diễn

/usr/local/bin/lessc

và tập tin không trống.

Có lẽ điều gì đó đã xảy ra với nodecài đặt của tôi , nhưng không biết làm thế nào để gỡ lỗi này. apt-get remove --purge node-lessvà cài đặt lại không giúp được gì.

Rất cám ơn sự giúp đỡ hoặc bất kỳ lời khuyên về gỡ lỗi!


Vâng, /usr/local/bin/lessckhông phải là vị trí chính xác khi nó xuất phát từ repo chính thức: packages.ubuntu.com/quantal/all/node-less/filelist ... Tôi đoán bạn cài đặt nó trong đường dẫn hệ thống sử dụng sudo npm ...mà là một ý tưởng thực sự xấu.
dAnjou

Câu trả lời:


7

Trong Ubuntu và các bản phân phối khác, bạn nên ưu tiên các gói phân phối thay vì cài đặt các gói thủ công. Vì vậy, trước hết, bạn nên xóa phần lõm được cài đặt qua npm :

sudo npm uninstall recess -g

Đồng thời xóa gói không có nút được cài đặt qua apt-get, để chúng ta có thể bắt đầu với một môi trường sạch:

sudo apt-get remove node-less

Sau khi ban hành hai lệnh này, đảm bảo rằng các tệp sau không tồn tại và nếu chúng tồn tại, hãy xóa chúng:

/usr/bin/lessc
/usr/local/bin/lessc

Đồng thời kiểm tra các thư mục sau (và xóa chúng nếu chúng tồn tại):

/node_modules/less
/usr/bin/node_modules/less
/usr/node_modules/less
/usr/local/bin/node_modules/less
/usr/local/node_modules/less
~/.node_modules/less
~/.node_libraries/less

Tất cả các tập tin và thư mục có thể được tạo ra theo nhiều cách khác nhau. Phương pháp cài đặt khác nhau dẫn đến các thư mục khác nhau được sử dụng. Xóa tất cả các tệp đó là quan trọng để đảm bảo rằng không có gì xung đột: bạn phải luôn có một và chỉ một phiên bản phần mềm được cài đặt trên hệ thống của bạn. Ngoại lệ duy nhất là khi bản phân phối cung cấp các phiên bản khác nhau của cùng một phần mềm (trong trường hợp này, gói được tạo để chúng không xung đột với nhau).

Bây giờ bạn có một môi trường sạch sẽ và có thể cài đặt ít nút :

sudo apt-get install node-less

Lưu ý rằng gói không có nút không giao hàng /usr/bin/recess, chỉ /usr/bin/lesscvậy, nó hoàn toàn ổn nếu recess --compilethất bại (hoặc, tốt hơn, nó phải thất bại).

Nếu lesscvẫn không hoạt động, vui lòng kiểm tra đầu ra của which lessc. Hãy nhớ rằng: nếu nó trả về một cái gì đó khác hơn /usr/bin/lessc, điều đó có nghĩa là bạn không sử dụng lessc từ gói phân phối, mà là một thứ khác.


Bạn không cần phải thích các gói phân phối, nhưng trộn các gói phân phối và các gói được biên dịch cung cấp các tệp nhị phân tương tự thực sự là một công thức cho các vấn đề.
Javier Rivera

@Javier: chào. Chắc chắn bạn không cần chỉ chọn các gói phân phối, nhưng chúng tôi đang hỏi Ask Ubuntu và tôi nghĩ giải pháp phù hợp nhất là giải pháp cho bạn biết cách sử dụng các gói phân phối. :-)
Andrea Corbellini

Chỉ là một câu trả lời xuất sắc, cảm ơn lời giải thích cẩn thận. Tất cả mọi thứ đang làm việc như nó cần. Không chắc chắn làm thế nào tôi quản lý để có được một phiên bản dud của npm ít được cài đặt, nhưng tôi thận trọng về việc không trộn các gói phân phối và biên dịch tương tự cũng được lưu ý. Thật đáng tiếc khi thường không thể chỉ dựa vào các gói distro, đặc biệt là với ruby, v.v.
cboettig 27/12/12

1
@cboettig: cảm ơn phản hồi của bạn, nó thực sự được đánh giá cao. Như Javier chỉ ra, bạn không bị buộc phải sử dụng các gói phân phối. Nhưng khi bạn cài đặt phần mềm của bên thứ ba, hãy nhớ không cài đặt hệ thống rộng. Ví dụ: tôi sử dụng Python Virtualenv, chroots, Linux Container (LXC) và máy ảo Qemu khi tôi cần chạy phần mềm không do phân phối cung cấp (hoặc khi tôi cần cấu hình hệ thống đặc biệt). Tất cả các công nghệ này (và nhiều công nghệ khác) giúp bạn cách ly phần mềm, tránh sự đau đớn.
Andrea Corbellini

Chạy lessccho /usr/local/bin/lessc no such file or directory, nhưng chạy which lessccho /usr/bin/lessc. Làm thế nào để tôi nói với nó để sử dụng lessc từ which lessc?
Jacob Valenta

3

Sau khi làm theo các bước từ câu trả lời của Andrea, bạn có thể phải chạy source ~/.bashrcnếu bạn nhận được bash: /usr/local/bin/lessc: No such file or directorykhi bạn chạy lessc và khi which lesschiển thị /usr/bin/lessc. Điều này là để cập nhật biến môi trường $ PATH của bạn.


Cũng lưu ý câu trả lời từ unix.stackexchange.com/questions/5609/ trên ngoài điều này.
Jeppe Mariager-Lam
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.