2012-02-07 37 views
22

Twitter Bootstrap 2 đã hết, tôi muốn tích hợp nó vào dự án Node.js của tôi. Thật không may, có điều gì đó sai với trình biên dịch ít hơn và tôi không thể làm cho nó hoạt động. Tôi đặt tất cả các tệp vào thư mục công khai và thiết lập dự án mới với express -c less newproj. và thêm vào các dòng dướiTwitter Bootstrap LESS với Node.js & Express

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

Tất cả các Node nói với tôi là:

Express server listening on port 3000 in development mode 
undefined 

Về phía khách hàng tôi nhận được một 500 (Internal Server Error) cho các tập tin bootstrap.css, mà phải được biên soạn bởi lessc.

lessc bootstrap.less 

Hoạt động tốt.

Bất kỳ ai biết cách giải quyết vấn đề?

+0

gì middleware khác mà bạn đã chạy? tĩnh? Bạn có biết những gì đang đăng nhập vào giao diện điều khiển không xác định? –

+0

Không có gì khác. Đó là một dự án hoàn toàn mới mẻ và tôi chỉ thay đổi hai dòng đó và tệp layout.jade. Không có đầu mối mà "không xác định" là đến từ một trong hai. – Patrick

Trả lời

19

Đối với hậu thế, điều này đã thay đổi rất nhiều trong tốc gần đây:

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

// This is just boilerplate you should already have 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(app.router); 
+0

Phiên bản này là gì? –

+0

ok, tôi đã cài đặt phần mềm trung gian hơn. tập tin của tôi ít hơn (styles.less) nằm trong /public/stylesheets/styles.less --- làm cách nào để lấy styles.css? –

+0

@barraponto use href = '/ stylesheets/styles.css' và css được tự động tạo ra – tofutim

11

Ok, đây là những gì tôi đã tìm thấy cho bạn. Trước tiên, bạn cần cả trình biên dịch và phần mềm trung gian tĩnh. Trình biên dịch biên dịch ít và recompiles về thay đổi này, middleware tĩnh không chấp thực tế của css

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

Thứ hai, đối với một số lý do khi trình biên dịch chạy nó là mất thông tin đường dẫn hiện tại, vì vậy nó không thể tìm thấy bao gồm. Vì vậy, tôi đã phải đi qua bootstrap.css và thêm đường dẫn đến mỗi lần nhập.

@import "/public/stylesheets/reset.less"; 

Điều này rõ ràng là lạ, tôi sẽ tìm hiểu sâu hơn.

Chỉnh sửa: Trong khi lẻ, một cái nhìn sâu sắc thông qua mã cho thấy tôi không có cách nào đơn giản xung quanh nó. Tìm kiếm một chút tìm thấy yêu cầu kéo này trên repo kết nối https://github.com/senchalabs/connect/pull/174 cung cấp một sửa chữa cho điều này, nhưng devs dường như không muốn nó.

Ngoài ra còn có một số giải pháp trong chuỗi đó, nhưng có vẻ như ý tưởng tốt nhất là đường dẫn tuyệt đối mà bạn đưa vào.

+0

Xem giải pháp @ GoldenBoy để cập nhật thông tin này. Bạn nên sử dụng phần mềm trung gian hơn. – tofutim