2014-11-22 53 views
2

我正在学习Express.js 4和Node,并且出现一个我一直无法弄清的错误。Express.js“app.use()需要中间件功能”

我正在尝试使用node-sass软件包来编译我的sass代码,但是我一直无法启动并运行它。

这里是我的主文件的一个精简版:

var express = require('express'); 
var sass = require('node-sass'); 

var app = express(); 

app.use(sass.middleware({ 
    src: __dirname + "/assets", 
    dest: __dirname + "/static", 
    debug: true 
})); 

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

app.get('/', function(req, res){  
    res.send("Hello World");  
}); 

var server = app.listen(3000, function() { 
    console.log("Node is now listening."); 
}); 

当我跑这跟node server.js,我得到一个错误,我后仰:

TypeError: app.use() requires middleware functions 

从此,我假设sass.middleware不是中间件功能...

  1. 什么d oes这个错误是什么意思?

  2. 为什么会被抛出?

  3. 我该如何解决?


最接近的答案我已经能够找到来自this的问题,但是从我从here收集到的是,这些答案将只与快递3.工作

我更如果有人能指出我如何设置Express 4和Sass的正确方向(如果这确实是可能的话),请感激。

回答

7

node-sass自述文件提到middleware has been movednode-sass-middleware。所以如果你npm install node-sass-middleware然后做:

var sassMiddleware = require('node-sass-middleware'); 
app.use(sassMiddleware({ 
    src: __dirname + "/assets", 
    dest: __dirname + "/static", 
    debug: true 
})); 

它应该工作。