2013-03-28 31 views
8

Tôi đang cố gắng làm cho nút hoạt động nhanh hơn, và tôi đơn giản là không thể thực hiện bất kỳ việc biên dịch nào cả. Đây là tập tin app.js tôi:node-sass không biên dịch với nút/express

var express = require('express') 
    , sass = require('node-sass') 
    , routes = require('./routes') 
    , user = require('./routes/user') 
    , http = require('http') 
    , path = require('path'); 

var app = express(); 

app.configure(function(){ 
    app.set('port', process.env.PORT || 3000); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'ejs'); 
    app.use(sass.middleware({ 
    src: __dirname + '/public/sass', 
    dest: __dirname + '/public/stylesheets', 
    debug: true 
    })); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.cookieParser('your secret here')); 
    app.use(express.session()); 
    app.use(app.router); 
    app.use(express.static(path.join(__dirname, 'public'))); 
}); 

app.configure('development', function(){ 
    app.use(express.errorHandler()); 
}); 

app.get('/', routes.index); 
app.get('/users', user.list); 

http.createServer(app).listen(app.get('port'), function(){ 
    console.log("Express server listening on port " + app.get('port')); 
}); 

Tôi có public/sasspublic/stylesheets, tuy nhiên không có vấn đề gì .scss file tôi đặt trong thư mục sass gì đang nhận được biên soạn. Có điều gì khác mà tôi cần phải vượt quá node app.js không?

Tôi thực sự gần từ bỏ và chỉ cài đặt đá quý sass và giữ một tab phụ mở để xem thư mục.

Trả lời

8

Thật khó hiểu khi phần mềm trung gian Stylus (theo đó nó được lấy cảm hứng, nó nói).

Cấu trúc thư mục của src nên bắt chước cấu trúc cuối cùng của đích đến đường dẫn bạn đang sử dụng để yêu cầu tệp CSS. Nếu bạn muốn các file CSS của bạn được lưu trữ như thế này:

./public/stylesheets/app.css 

Và URL để truy cập các tập tin sẽ là:

http://.../stylesheets/app.css 

Bạn cần phải cấu hình trung như thế này:

app.use(sass.middleware({ 
    src: __dirname + '/public/sass', 
    dest: __dirname + '/public', 
    debug: true 
})); 

Và cấu trúc thư mục SASS của bạn như sau:

./public/sass/stylesheets/app.scss 

Tôi tin rằng nó hoạt động như thế này:

  • đi theo con đường của yêu cầu HTTP: /stylesheets/app.css
  • để tìm các tập tin SCSS, nối đường dẫn URL để src và thay thế phần mở rộng: ./public/sass/stylesheets/app.scss
  • cho điểm đến, nối đường dẫn URL vào dest: ./public/stylesheets/app.css
+0

Điều đó làm cho ý nghĩa, nhưng đáng tiếc nó vẫn không hoạt động. Các tệp SCSS vẫn chưa bao giờ được biên dịch. – bjork24

+0

Tôi đang sử dụng * gần như * mã của bạn ([gist] (https://gist.github.com/robertklep/5264130)) và hoạt động tốt (bao gồm cả hiển thị lại khi tệp SCSS được thay đổi). Có lẽ một vấn đề cho phép? – robertklep

+0

Điều đó thực sự kỳ quặc. Tôi có cùng một cấu hình và cấu trúc thư mục, nhưng nó chỉ đơn giản là không làm việc cho tôi. Oh well. Tôi sẽ tiếp tục sử dụng đá quý la bàn của tôi. – bjork24

1

Tôi đã có si vấn đề milar nhận được middleware node-sass làm việc. Cuối cùng tôi đã từ bỏ và cố gắng asset-rack mà tôi cũng không thể làm việc cho đến khi tôi bắt đầu sử dụng ngã ba này: https://github.com/techpines/asset-rack/pull/76

Thất vọng rằng yêu cầu kéo cho giá đỡ tài sản đã được đặt trong khoảng 11 tháng tôi đã kết thúc bằng văn bản phần mềm trung gian tập tin tĩnh của riêng tôi có tên là Electricity hỗ trợ Sass trong số các tính năng tốt khác để có các tính năng.

+1

Thư viện tuyệt vời! –

1

Hãy thử sử dụng các tùy chọn tiền tố:

app.use(sass.middleware({ 
    src: __dirname + '/public/sass', 
    dest: __dirname + '/public', 
    prefix: '/stylesheets' 
    debug: true 
})); 
Các vấn đề liên quan