我使用Express中間件設置了節點服務器。當加載一個觸發大約10個其他負載(js,css等)的HTML文件時,我在某些文件上獲得了ECONNABORTED錯誤隨機。確切的錯誤是:在Express/Node中使用sendFile時出現隨機'ECONNABORTED'錯誤
{ [Error: Request aborted] code: 'ECONNABORTED' }
通過這種簡化的代碼生成(之後我試着調試問題):
res.sendFile(res.locals.physicalUrl,function (err) {
if (err)
console.log(err);
...
}
很多帖子談論該錯誤不指定全路徑名產生。這不是這裏的情況。我確實指定了完整路徑,而且實際上錯誤是隨機生成的。有時候,頁面及其所有後續鏈接都可以完美載入,有時候它們不會。我試圖刷新緩存,並沒有找到任何模式來連接它。
這個特定的錯誤似乎是套接字連接中止的一個通用術語,並在FTP等其他應用程序的上下文中討論。
已經意識到節點工作線程可以增加,我試圖做這樣使用:
process.env.UV_THREADPOOL_SIZE = 20;
但是,我的理解是,即使沒有這一點,在大部分的文件傳輸可能要等待工作線程是免費的,不會中止。我不是在說這裏的大文件,所有文件都小於1 MB。
我有一種直覺,認爲這與節點直接無關。
請指出任何其他可能性(節點或其他)來處理此錯誤。此外,還有其他間接解決方案?重試幾次可能是一次,但那會很笨拙。編輯:不,我不能重試。標題已發送錯誤!
一個側面說明: 上使用SENDFILE的許多例子跳過使用回調,從而給人的印象,這是一個同步調用。不是這樣。請始終使用回調,檢查是否成功,然後才轉到「下一個」中間件,或者如果發送失敗,採取適當措施。如果不這樣做,可能會導致難以在異步環境中調試後果。
當使用'res.sendFile'時,即使'res.statusCode'爲'200',我也看到了一些'ECONNABORTED'。目前我還沒有找到解決方案。 – paperclip