我有这个简单的代码
router.post('/foo', function(req,res,next){
try{
var file = path.resolve(folder, runId, 'temp.html');
res.sendFile(file);
}
catch(err{
//not reached
next(err);
}
});
我尝试发送的文件不存在,这是一个可能但很好的例外。但是,res.sendFile不会抛出同步错误。
似乎我不能用这种方式听错:
res.sendFile(file).on('error', function(){})
//?
那么我们如何处理res.sendFile抛出的错误?
答案 0 :(得分:5)
试试这个,请参阅文档res.sendFile
var options = {
root: __dirname + '/public/',
dotfiles: 'deny'
};
var fileName = path.resolve(folder, runId, 'temp.html');
res.sendFile(fileName, options, function (err) {
if (err) {
console.log(err);
res.status(err.status).end();
}
else {
console.log('Sent:', fileName);
}
});
答案 1 :(得分:3)
请详细查看文档:
http://expressjs.com/en/4x/api.html#res.sendFile
根据文档,您的代码应如下所示:
router.post('/foo', function(req,res,next){
var file = path.resolve(folder, runId, 'temp.html');
res.sendFile(file, options, function(err) {
if(err) {
res.status(err.staus).end()
}
});
});
希望这有帮助