[英]Nodejs - Express res.download giving Can't set headers after they are sent exception
我想制作一個可以提供任何擴展文件的 api。 像這樣: http://localhost/download/[file].[extension]
這是我的代碼,但它間歇性地給出以下消息:發送后無法設置標頭。
var express = require('express');
var app = express();
app.get('/download/:fileName/:extension', function(req, res){
var file = __dirname + '/' + req.params.fileName + '.' + req.params.extension;
res.download(file, function(err){
if (err) {
res.sendStatus(404);
}
res.end();
});
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('app listening at http://%s:%s', host, port);
});
res.download
已經發送了一個響應(雖然在出現錯誤的情況下並不總是如此)
你可以通過這樣做來解決這個問題
res.download(file, function(err){
if(err) {
// Check if headers have been sent
if(res.headersSent) {
// You may want to log something here or do something else
} else {
return res.sendStatus(SOME_ERR); // 404, maybe 500 depending on err
}
}
// Don't need res.end() here since already sent
}
上面評論中提到的其他更改:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.