app.use(function (req, res, next) {
throw new Error('critical');
})
使Express服務器捕獲嚴重錯誤並輸出它,同時我希望它崩潰。禁用針對嚴重錯誤的快速錯誤處理
添加錯誤處理程序不會替換默認處理程序。
如何禁用關鍵錯誤的快速錯誤處理?
app.use(function (req, res, next) {
throw new Error('critical');
})
使Express服務器捕獲嚴重錯誤並輸出它,同時我希望它崩潰。禁用針對嚴重錯誤的快速錯誤處理
添加錯誤處理程序不會替換默認處理程序。
如何禁用關鍵錯誤的快速錯誤處理?
如果您希望您的服務器在發生嚴重錯誤時發生崩潰,您可以定義一個error-handling middleware。這是通過定義一個函數4參數來完成的,第一個是錯誤。這將在拋出錯誤時調用。您可以檢查錯誤並確定它是否至關重要,如果是,請致電process.exit
。
const app = require('express')()
app.use('/', (req, res) => {
throw new Error('critical')
})
app.use((err, req, res, next) => {
if (err.message === 'critical') {
process.exit(1)
} else {
// carry on listening
}
})
的可能的複製[如何關閉的Node.js快遞(EJS模板引擎),用於生產錯誤?(http://stackoverflow.com/questions/25354022/how-do-i-turn- off-node-js-express-ejs-template-engine-errors-for-production) –
@Muhammad不,它不是。禁用*錯誤處理*,而不是錯誤。 – estus
另外,如果您擔心發送給客戶端的堆棧跟蹤信息,可以設置環境變量NODE_ENV = production。這將發送「內部錯誤500」而不是來自默認錯誤處理程序的堆棧跟蹤。 –