Express.js“app.use()需要中间件功能”

时间:2014-11-22 04:10:19

标签: javascript node.js express sass

我正在学习Express.js 4和Node,而且我收到的错误是我无法弄明白的。

我尝试使用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. 这个错误是什么意思?

  2. 为什么会被抛出?

  3. 如何解决?


  4. 我能找到的最接近的答案来自this问题,但我从here收集到的答案是,这些答案仅适用于Express 3。

    如果有人能指出我如何将Express 4和Sass一起设置(如果确实可行的话),我将非常感激。

1 个答案:

答案 0 :(得分: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
}));

它应该有用。