如何更改 Express 中的请求函数顺序?

How to change request function order in Express?

我正在尝试将 Ghost 应用程序用作我的主 Express 应用程序的子应用程序,运行 在“/blog”路径上。

Ghost文档推荐的方式,我应该有这个

ghost().then(function (ghostServer) {
  app.use("/blog", ghostServer.rootApp);
  ghostServer.start(app);
});

但是,我采用了 Express 的首选方法,其中 app.js 的末尾包括 404 情况下的错误处理(在 public 文件夹,在 "/blog") 的情况下也是如此。这意味着 app.use("/blog", ghostServer.rootApp); 在 错误检查之后出现 ,因此,如果我注释掉我的错误处理(显然,我没有真的很想做),否则我无法访问它。

我该如何解决这个问题?

我不确定是否应该将此作为答案,但我有一个解决方案,我认为这不是最好的解决方案,但它似乎确实有效。

var gs = null;
ghost().then(function (ghostServer) {
  gs = ghostServer;
  ghostServer.start(app);
});

app.use('/blog', function (req, res, next) {
  if (gs) gs.rootApp(req, res, next);
  else next();
});

这样,app.use实际上是被同步调用了。但是,这绝对不是最有效的方法(因为每次向“/blog”发出请求时都会向堆栈添加一个函数调用)

我希望看到比这更好的答案。