2011-12-14 32 views
5

app.js:express.js ít biên dịch: không thể có được công việc

app.use(express.compiler({ src: __dirname + '/public', enable: ['less']})); 
app.use(express.static(__dirname + '/public')); 

Theo quan điểm của ngọc bích của tôi:

link(rel="stylesheet", type="text/css", href='/app/stylesheets/app.less) 

Tôi đã có ít tập tin trong: công cộng/app/stylesheets /app.less

Khi tôi yêu cầu trang tôi đã có trong đầu html:

<link href="/app/stylesheets/app.less" type="text/css" rel="stylesheet"> 

Và lưu ý trong bảng điều khiển máy chủ.

1) Vì vậy, tại sao diễn đạt thậm chí không cố gắng biên dịch app.less? Phải không?

2) Nếu mọi thứ đều đúng: nên liên kết trong htm được

<link href="/app/stylesheets/**app.less**" ... > 

hoặc bày tỏ nên thay đổi phần mở rộng của tập tin trong khi render?

<link href="/app/stylesheets/**app.css**" ... > 

?

Trả lời

12

Dường như trình biên dịch rằng() đã bị xóa khỏi kết nối và nó sẽ không được hỗ trợ nữa, theo TJ Holowaychuck (tác giả của Connect & Express):

https://github.com/visionmedia/express/issues/877


Cập nhật 2013 -01-16

Kể từ Express 3.0.0, khung bây giờ bao gồm less-middleware thay vì số compiler middleware tha t đã từng có trong Connect. Nó hoạt động giống như phần mềm trung gian cũ.

Để thêm nó vào một dự án hiện có, thêm less-middleware-package.json của bạn và chạy npm install sau đó thêm dòng sau vào cấu hình của bạn:

app.use(require('less-middleware')({ src: __dirname + '/public' })); 
app.use(express.static(path.join(__dirname, 'public'))); 

Trong mẫu Jade của bạn, bạn tham khảo nó như là một tập tin CSS bình thường:

link(rel='stylesheet', type='text/css', href='css/styles.css') 

cấu trúc thư mục của bạn sẽ trông như thế này:

myapp 
+-public 
    +-css 
    +-styles.less 

less-middleware sẽ tìm kiếm các tệp .less có cùng tên với tệp .css đã được yêu cầu. Nếu nó tìm thấy nó sẽ biên dịch nó và máy chủ kết quả là CSS.

Có thể bạn sẽ muốn loại trừ các tệp CSS đã biên dịch khỏi điều khiển nguồn của mình. Nếu bạn đang sử dụng Git, bạn có thể thêm .css vào tệp .gitignore của mình.

+0

Yeah, nó có ý nghĩa Tôi không tìm thấy cuộc gọi trình biên dịch nguồn .. Cảm ơn bạn đã chỉ ra. – WHITECOLOR

5

Bạn có thể nhận được LESS biên dịch để làm việc thông qua phần mềm trung gian, giống như cách mà Stylus hiện đang hoạt động.

Chỉnh sửa: Thay vì cố gắng lấy [pull request] [0] vào kho lưu trữ LESS chính, nó đã được quyết định chỉ làm như một gói riêng biệt.

Đây là cách bạn có thể sử dụng LESS.js middleware:

var lessMiddleware = require('less-middleware'); 

var app = express.createServer(); 

app.configure(function() { 
    // Other configuration here... 

    app.use(lessMiddleware({ 
     src: __dirname + '/public', 
     compress: true 
    })); 

    app.use(express.static(__dirname + '/public')); 
}); 

Trong tập ngọc bích của bạn sau đó bạn sẽ có thể sử dụng tham chiếu đến tập tin css:

link(rel="stylesheet", type='text/css', href='/app/stylesheets/app.css') 
+0

express.staticProvider không còn hoạt động trong Express 3.x –

+0

Cảm ơn, đã cập nhật để sử dụng cú pháp xử lý tĩnh Express 3.x. – Randy

Các vấn đề liên quan