2016-02-13 72 views
3

到res.sendFile錯誤,我有這個簡單的代碼聽在快遞

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拋出的錯誤呢?

回答

3

試試這一個,請參閱文檔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); 
    } 
    }); 
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() 
     } 
     }); 
}); 

希望這會有所幫助