如何在连接服务器中配置“中间件”

How to config `middleware` in connect server

我正在为我的 angular 应用程序使用 connect 服务器和 serve-static。根据 stylus 文档,他们要求使用 middleware (https://learnboost.github.io/stylus/docs/middleware.html) 来实现 .styl 文件。我试过了,但没有用。

在连接服务器文档中 https://github.com/senchalabs/connect#readme 显示了一些我不理解的方式。

这是我的代码:

var connect = require('connect'),
    serveStatic = require('serve-static');

var app = connect();

app.middleware({
   src: __dirname + '/css',
   dest: __dirname + '/css'
 });

function compile(str, path) {
   return stylus(str)
     .set('filename', 'tcp.styl')
     .set('compress', true)
     .use(nib())
     .import('nib');
 }

app.use(serveStatic("app"));
app.listen(5000, function () {console.log("HI");});

有人帮我配置中间件吗?

我现在遇到的错误是:

D:\Projects\TCP>node server.js
D:\Projects\TCP\server.js:6
app.middleware({
    ^
TypeError: undefined is not a function
    at Object.<anonymous> (D:\Projects\TCP\server.js:6:5)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

D:\Projects\TCP>

更新

var connect = require('connect'),
    serveStatic = require('serve-static'),
    stylus = require('stylus');

var app = connect();

app.use(stylus.middleware({
    src     : __dirname + '/app/css',
    dest    : __dirname + '/app/css',
    force   : true,
    compile : function(str, path) {
      return stylus(str, path)
        .set('tcp', path)
        .set('warn', true)
        .set('compress', true);
    }
}));

app.use(serveStatic("app"));
app.listen(5000, function () {console.log("HI", __dirname);});

默认情况下不再提供 Stylus 中间件。 https://github.com/senchalabs/connect/blob/0680f226f6bf7cc0c9e21a5a54a83c2deda5c4b4/History.md#057--2011-02-01

你还可以像这样使用它

var stylus = require('stylus');

...

app.use(stylus.middleware(...));