如何在Express中更改请求功能顺序?

时间:2015-04-10 22:46:58

标签: node.js express ghost-blog

我试图将Ghost应用程序用作我的主要Express应用程序的子应用程序,在" / blog"路径。

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

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

然而,我采用了Express的首选旋转,其中app.js的结尾包含404的错误处理(该路径既不作为视图也不作为公共文件发现文件夹,在" / blog")的情况下为true。这意味着app.use("/blog", ghostServer.rootApp);在错误检查后出现,因此,如果我注释掉我的错误处理,我可以访问我的Ghost服务器(显然,我不是真的我想这样做,否则我无法访问它。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

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”发出请求时都会向堆栈添加一个函数调用)

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