0
我已經nginx的設置來限制上傳文件大小爲2MB,並Express中設置允許此相同的大小:處理nginx的錯誤/表達
nginx的:
server {
client_max_body_size 2M;
}
快遞:
app.use(express.limit('2mb'));
在我的文件上傳處理程序中,我記錄了我得到的錯誤,並且在某個時候我收到了一個對象,它給了我狀態碼和更多有用的信息。重新啓動服務器後,我突然停止獲取該錯誤對象,現在獲取了一串HTML代替它。
的HTML是你所期望看到屏幕上nginx的輸出:
<html>
<head><title>413 Request Entity Too Large</title></head>
<body bgcolor="white">
<center><h1>413 Request Entity Too Large</h1></center>
<hr><center>nginx/1.4.4</center>
</body>
</html>
這是爲什麼?我怎樣才能確保我只返回一個錯誤對象,而不是這個非常有用的字符串?
發送響應回調:
callbacks.uploadFailure = function(err){
res.send(413, err);
};
,我也曾嘗試返回JSON:
callbacks.uploadFailure = function(err){
res.json(413, err);
};
之前,我可以這樣做:
if(err.error.status === 413) {$scope.errmsg = 'File upload too large.'}
但現在我不能這樣做,因爲err完全由上面列出的html字符串組成,我需要解析這個字符串來確定呃錯誤是什麼。顯然我不想那樣做。
任何建議或解釋爲什麼我沒有得到一個錯誤對象的工作?
我懷疑問題在於,Nginx在您的Express代碼之前正在收集錯誤。嘗試使nginx中的值稍微高一些(比如3M),然後重新啓動服務器。 –
就是這樣。我想我可以將nginx設置爲一個非常高的值,並拋出一些代碼來處理它作爲邊緣情況。請做出正確答案,Hector,我可以接受。謝謝! – Stuart