4
有没有人与koa.js和流一起工作?Koa.js和流媒体。你如何处理错误?
考虑这个例子
const fs = require('fs');
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx) => {
ctx.body = fs.createReadStream('really-large-file');
});
app.listen(4000);
如果用户中止请求,我得到任何
Error: read ECONNRESET
at _errnoException (util.js:1024:11)
at TCP.onread (net.js:618:25)
或
Error: write EPIPE
at _errnoException (util.js:1024:11)
at WriteWrap.afterWrite [as oncomplete] (net.js:870:14)
什么是处理这种类型的错误的正确方法?
P.S.我没有错误,请求与快递
const fs = require('fs');
const express = require('express');
const app = express();
app.get('/', (req, res) => {
fs.createReadStream('really-large-file').pipe(res);
});
app.listen(4000);
P.P.S.中止后我试过
app.use(async (ctx) => {
fs.createReadStream('really-large-file').pipe(ctx.res);
ctx.respond = false;
});
但它没有效果。
不幸的是,此处理程序不会捕获ECONNRESET错误。 –
抱歉,我没有注意到...一个(可读的)流不等待(你没有尝试;-)),所以你不能在那里发现错误。你必须promisify你的文件加载得到它的工作...更新答案... –
这个问题是你将文件内容传递到内存,然后将其解析到响应主体。这不是你应该如何实现流媒体。我可以用'readFileSync'读取文件内容并将其传递给主体。 –