节点 js 流待处理

Node js stream is pending

我有以下 node 路线:

router.route('/resource/:encodedString/:mediaType')
.all(function (req, res) {
    var decoded = jwt.decode(req.params.encodedString, require('../secret')());
    var mediaObject = decoded.mediaObject;

    res.header('content-disposition', 'filename="' + mediaObject.fileName + req.params.mediaType + '"');
    var stream = fs.createReadStream(mediaObject.targetDir + mediaObject.fileName + req.params.mediaType);
    res.pipe(stream);
})

这是我的客户调用的。

但是这并没有给我想要的结果,因为一旦调用它,响应就会挂起。

    Accept-Encoding:identity;q=1, *;q=0
Range:bytes=0-
Referer:http://localhost/myProject/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36

导致内容不显示

所以我的问题是我做错了什么?

您没有结束您的回复,这就是它处于待处理状态的原因。我的建议是在可读流的 end 事件上调用 res.end(),例如:

var stream = fs.createReadStream(mediaObject.targetDir + mediaObject.fileName + req.params.mediaType);
res.pipe(stream);

stream.on('end', function () {
  console.log("Reading operation completed.");
  res.end();
});;