Backbone.js 如何设置Express以使用主干网和pushState?

Backbone.js 如何设置Express以使用主干网和pushState?,backbone.js,routing,express,middleware,pushstate,Backbone.js,Routing,Express,Middleware,Pushstate,我试图将Express设置为使用主干网和pushState,但我不确定如何处理路由。我尝试添加一个中间件函数(基于),通过在url中插入#来处理任何未定义的路由,但似乎从未调用中间件: app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(

我试图将Express设置为使用主干网和pushState,但我不确定如何处理路由。我尝试添加一个中间件函数(基于),通过在url中插入
#
来处理任何未定义的路由,但似乎从未调用中间件:

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser('yadda yadda'));
  app.use(express.session());
  app.use(app.router);

  // This should handle undefined routes.
  app.use(function(err, req, res, next){
    // Isn't getting called.
    newUrl = req.protocol + '://' + req.get('Host') + '/#' + req.url;
    res.redirect(newUrl);
  });

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

目前,每当我访问Express中未定义的路线时(
http://localhost:3000/test/foo
),它给我一个
无法获取/test/foo
错误。我希望它重定向到
http://localhost:3000/#/test/foo
这样主干网就可以处理永久链接之类的路由。我错过了什么?

对于在这里定居的后代:
答案是他的中间件应该在
app.use(app.router)之前

你找到这个问题的答案了吗?再读一遍,与其说是中间件,不如说是通吃路线。这可以使用其他方法完成,例如
app.get(“*”,function(){})路由器堆栈中的后期?