1

我刚刚将一个 Node.js 站点(基于 Express 构建)迁移到 Heroku,我看到在应用程序错误的情况下,Heroku 显示其自定义错误页面,而不是我的应用程序返回的任何内容。

我不希望它这样做,因为 Express 已经提供了一种机制来做到这一点,而我的应用程序就是这样做的。是否可以告诉 Heroku 使用我的应用返回的任何内容?

我更喜欢这个的一个例子是因为我的应用程序的错误页面可以正确显示登录或注销状态,而静态页面(例如在 S3 上)无法做到这一点。另一个例子是我的应用程序实际上根据精确的 5xx 状态码显示不同的页面,而 Heroku 将所有 5xx 码视为相同。

编辑:想到另一个特别值得注意的例子:我们的应用程序为每个错误实例创建唯一的 ID,并在错误页面上向用户显示该 ID,以便如果/当他们联系我们时,我们可以在我们的日志。不能用静态页面做到这一点。

我意识到 Heroku 只通过状态码检测错误,所以我可以在出现错误的情况下发回 200。但这似乎是错误的——例如,在 404 的情况下,您不会发送 200。(想想看,Heroku 上的 REST API 如何返回 5xx 的 JSON?希望 Heroku 的自定义错误页面只覆盖 HTML 响应?)

提前致谢!

4

1 回答 1

1

要直接回答问题 - 不,您不能关闭 Heroku 错误页面……</p>

Heroku 处理的错误是您的应用程序没有处理的错误,因此如果您的应用程序捕获错误并返回一个页面,那么 Heroku 不会干预。

我有很多应用程序,当然不是 Node,可以做到这一点。

于 2012-05-11T13:29:44.513 回答