0
我有以下的RESTify處理程序:爲什麼我的流錯誤處理程序不被調用?
var assert = require('assert-plus');
var request = require('request');
function postParseVideo(req, res, next) {
assert.string(req.body.videoSourceUrl, 'videoSourceUrl');
var stream = request.get({uri: req.body.videoSorceUrl});
stream.on('response', function(parseResponse) {
fnThatTakesAReadableStream(parseResponse, function(err, data) {
if (err) {
console.log(err);
next(err);
} else {
res.send(201, null, {Location: data.location});
next();
}
});
});
stream.on('error', function(err) {
console.log(err);
next(err);
});
};
當我運行這一點,無論是流事件處理程序的要求不斷調用。相反,錯誤會冒泡到restify服務器:{"code":"InternalError","message":"options.uri is a required argument"}
。我看了看源要求v2.54.0,它看起來像該錯誤信息必須從restify.js的406線,讀取現身:
return self.emit('error', new Error('options.uri is a required argument'))
我已經在許多其他語言的成功使用的流,但我是JavaScript新手。在我看來,像request.get
正在拋出一個同步錯誤,當它應該發出'錯誤'事件。有什麼我從根本上誤解了如何在Node中實現流?