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中实现流?