【问题标题】:Express.js "app.use() requires middleware function"Express.js “app.use() 需要中间件功能”
【发布时间】:2015-01-20 08:12:58
【问题描述】:

我正在学习 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. 我该如何解决?


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

如果有人能指出如何将 Express 4 和 Sass 一起设置的正确方向,我将不胜感激(如果确实可以的话)。

【问题讨论】:

    标签: javascript node.js express sass


    【解决方案1】:

    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
    }));
    

    它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-08
      • 2019-11-14
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 2015-10-17
      • 2017-05-04
      • 1970-01-01
      相关资源
      最近更新 更多