未捕獲的錯(cuò)誤容易引起內(nèi)存泄漏、文件描述符泄漏等生產(chǎn)環(huán)境主要的問題。Node 的 Domain 模塊被設(shè)計(jì)用來解決這一問題,然而效果不佳。事實(shí)上,以合理的方式來處理所有未捕獲的錯(cuò)誤是不可能的,目前,最好的方法就是使程序崩潰。當(dāng)使用 promise 時(shí),請注意正確地處理了錯(cuò)誤。
Fastify 遵循不全則無的原則,旨在精而優(yōu)。因此,確保正確處理錯(cuò)誤成了開發(fā)者要考慮的問題。由于大部分的錯(cuò)誤源于預(yù)期外的輸入,我們建議為輸入的數(shù)據(jù)指明 JSON.schema 驗(yàn)證。
要注意的是,在基于回調(diào)的路由中,F(xiàn)astify 不會幫你捕獲錯(cuò)誤。因此,任何未捕獲的錯(cuò)誤都可能造成崩潰。 但當(dāng)路由被聲明為 async 模式時(shí),錯(cuò)誤會被 promise 安全地捕獲,并通過 Fastify 默認(rèn)的錯(cuò)誤處理器以一般的 Internal Server Error 響應(yīng)發(fā)送給客戶端。要自定義這一行為,請看 setErrorHandler。
該 content type 的解析器已經(jīng)被注冊。
Content-Type 應(yīng)為一個(gè)字符串。
content type 不能是一個(gè)空字符串。
該 content type 接收的處理函數(shù)無效。
提供的待解析類型不支持。只支持 string 和 buffer。
請求 body 大小超過限制。
收到的 media type 不支持 (例如,不存在合適的 Content-Type 解析器)。
請求 body 大小與 Content-Length 不一致。
已存在同名的裝飾器。
缺失依賴導(dǎo)致裝飾器無法注冊。
鉤子名稱必須為字符串。
鉤子的回調(diào)必須為函數(shù)。
日志工具目標(biāo)地址無效。僅接受 'stream' 或 'file' 作為目標(biāo)地址。
響應(yīng)已發(fā)送。
不能在 onError 鉤子中調(diào)用 send。
響應(yīng) payload 類型無效。只允許 string 或 Buffer。
提供的 schema 沒有 $id 屬性。
同 $id 的 schema 已經(jīng)存在。
不存在 $id 為提供的值的 schema。
某個(gè)路由的 JSON schema 不合法。
狀態(tài)碼不為 204 時(shí),Promise 的 payload 不能為 'undefined'。
更多建議: