2012-05-11 38 views
1

我剛剛將一個Node.js站點(構建在Express上)遷移到Heroku,我發現在出現應用程序錯誤的情況下,Heroku顯示了它的自定義錯誤頁面,而不是我的應用程序返回的內容。Heroku:可以關閉自定義錯誤頁面嗎?

我希望它不這樣做,因爲Express已經提供了a mechanism來做到這一點,我的應用程序做到了這一點。是否有可能告訴Heroku使用我的應用程序返回的內容?

爲什麼我更喜歡這個的一個例子是因爲我的應用程序的錯誤頁面可以正確顯示登錄或註銷狀態,哪個靜態頁面在S3上,無法做到。另一個例子是我的應用程序實際上基於精確的5xx狀態碼顯示不同的頁面,而Heroku將所有5xx代碼視爲相同。

編輯:另一個特別值得一提的例子思考:我們的應用程序會爲每個錯誤實例是唯一的ID,並顯示ID到錯誤頁面上的用戶,因此,如果/當他們與我們聯繫,我們可以看看在我們的日誌中記錄確切的錯誤實例。用靜態頁面無法做到這一點。

我意識到Heroku只能通過狀態碼檢測錯誤,所以我可以在錯誤的情況下發回200。但這似乎是錯誤的 - 例如在404s的情況下,你不會送回200。 (然後想一想,Heroku上的REST API如何爲5xx返回JSON呢?希望Heroku的自定義錯誤頁面僅覆蓋HTML響應?)

在此先感謝!

+0

您是否檢查過日誌以確保您的應用程序沒有崩潰或拋出其他類型的錯誤?如果你每次看到一個503,這可能意味着別的什麼。請參閱https://devcenter.heroku.com/articles/error-codes。 –

+0

我很確定我的應用程序沒有崩潰或無法捕獲異常(這會在Node.js的情況下導致應用程序崩潰),但是一個很好的問題 - 讓我確認是這種情況。 –

+0

你看着自定義錯誤代碼配置變種? https://devcenter.heroku.com/articles/custom_error_pages – Schneems

回答

1

直接回答這個問題 - 不,你不能關閉Heroku的錯誤頁面...

的錯誤是Heroku的手柄是你的應用程序不是的,因此,如果您的應用程序捕獲錯誤並返回頁面,那麼Heroku不會介入。

我有很多應用程序,當然不是Node,這樣做。

+0

謝謝尼爾。我會研究爲什麼我的應用程序可能會返回Heroku的錯誤頁面。 –

+0

你說得對,尼爾 - 常規錯誤確實返回我的應用程序的錯誤頁面。如果我的應用在30秒內未能響應,Heroku的錯誤頁面將顯示。再次感謝。 –