Bigpipe頁(yè)面分割
項(xiàng)目中需要打印日志文件革为,因文件過(guò)大所以分割加載,以便將來(lái)改為持續(xù)輸出加載
1扶歪、 在使用await前特占,系統(tǒng)自己結(jié)束了res輸出糙置,造成報(bào)錯(cuò)end after write,于是使用await停止當(dāng)前resopnse結(jié)束是目,等待主動(dòng)觸發(fā)res.end(),才進(jìn)入正常大頁(yè)面分割輸出
2谤饭、輸出報(bào)錯(cuò)404,但是,文件已經(jīng)觸發(fā)了end懊纳,并正常返回揉抵,于是設(shè)置文件頭writeHead status code為200 返回正常
/**
* @name 日志文件打印
*/
app.use(router.get("/xxx",async (ctx,next)=>{
let url = "./logs/logfile.log";
let num = ctx.query["old"];
if(num) url+="."+num
// 設(shè)置文件頭
ctx.res.writeHead(200,{
'Accept': 'text/plain',
'Content-Type':'text/plain;charset=utf-8',
'Transfer-Encoding' : 'chunked'
})
await (new Promise((resolve,reject)=>{
let st = fs.createReadStream(url,{highWaterMark:10})
st.setEncoding("utf8");
st.on("data",d=>{
ctx.res.write(d);
})
st.on("end",d=>{
ctx.res.end();
})
}))
next();
}))