2014-12-18 16 views
10

Tôi đang cố gắng lấy phần mềm trung gian nút làm việc với Express. Ứng dụng chạy không có lỗinode-sass-middleware không biên dịch

...(modules) 
var sassMiddleware = require('node-sass-middleware'); 

var routes = require('./routes/index'); 

var app = express(); 

// uncomment after placing your favicon in /public 
//app.use(favicon(__dirname + '/public/favicon.ico')); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
//---- LOAD SASS -----// 
// adding the sass middleware 
var srcPath = __dirname + '/scss'; 
var destPath = __dirname + '/public/stylesheets'; 
app.use(sassMiddleware({ 
    src: srcPath, 
    dest: destPath, 
    debug: true, 
    outputStyle: 'compressed' 
})); 

app.use(express.static(path.join(__dirname, 'public'))); 

Có thể thấy bất kỳ điều gì sai với cách tôi đang cố gắng biên dịch mẫu không?

cấu trúc file:

app 
controllers 
routes 
public 
-stylesheets 
scss 
... 
+0

Bạn đang sử dụng phiên bản Express nào? Ví dụ package.json họ đang sử dụng kết nối 2.7.9. Quy ước đã thay đổi rất nhiều vì vậy bạn có thể phải làm điều gì đó như app.use (sassMiddleware ({ src: srcPath, dest: destPath, gỡ lỗi: true, outputStyle: 'compressed' })()); – jusynth

Trả lời

7

Đây là cách app.js nên là:

app.use(sassMiddleware({ 
    src: srcPath, 
    dest: destPath, 
    debug: true, 
    outputStyle: 'compressed' 
}), 
express.static(path.join(__dirname, 'public'))); 

Ngoài ra tập tin SCSS chính của bạn nên được đặt tên style.scss và được bên SCSS/stylesheets/thư mục.

Bạn sẽ thấy một bản ghi như thế này, nếu bạn đã tải một cách chính xác các mô-đun:

source : /Users/abc/Desktop/SO/SO_node/scss/stylesheets/style.scss 
    dest : /Users/abc/Desktop/SO/SO_node/public/stylesheets/stylesheets/style.css 
    read : /Users/abc/Desktop/SO/SO_node/public/stylesheets/stylesheets/style.css 
    render : /Users/abc/Desktop/SO/SO_node/scss/stylesheets/style.scss 
+0

Giải pháp của bạn hoạt động như một sự quyến rũ. Thật mỉa mai là không có ví dụ về cấu trúc chính xác của việc sử dụng 'node-sass-middleware' hiện diện ở hầu như không nơi nào! Đây là ví dụ duy nhất tôi tìm thấy! –

+0

Vấn đề chính là đường dẫn đến tệp * .scss. Tên trùng lặp "scss/stylesheets /" – Volodymyr

0

Better đi cho grunt-sass. Cấu hình đơn giản, tác vụ tự động (nhờ grunt) và cũng có thời gian biên dịch nhanh hơn vì libsass, là phiên bản C của trình biên dịch Ruby ban đầu cho SASS. Biên dịch sass/file SCSS trong 0,3 giây thay vì 3.

1

Một vấn đề cũng có thể là bạn muốn biên dịch scss

thay vì sass. Do đó, hãy đặt indentedSyntax thành false.

app.use(require('node-sass-middleware')({ 
    src: path.join(__dirname, 'scss'), 
    dest: path.join(__dirname, 'public'), 
    indentedSyntax : false, 
    sourceMap: true 
})); 

Hoặc xóa hoàn toàn. Express-generator thêm giá trị này theo mặc định.

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