最近angular应用出现bug
通常它是这样工作的:
错误描述如下:
大约 1% 的请求返回错误。大约 99% 的请求都可以正常工作。 但是 API 总是接收请求,然后总是正确返回 PDF 缓冲区(日志中没有错误,它表示响应代码状态为 200)。所以角度正确发送请求,但有时没有收到响应(???)。
我永远无法重现此类错误/行为,只有用户可以:D
这是 Angular 接收到的错误对象:
{
"headers": {
"normalizedNames": {},
"lazyUpdate": null,
"headers": {}
},
"status": 0,
"statusText": "Unknown Error",
"url": "https://[my_hidden_url]/multirep/offer?OfferNo=448589",
"ok": false,
"name": "HttpErrorResponse",
"message": "Http failure response for https://[my_hidden_url]/multirep/offer?OfferNo=448589: 0 Unknown Error",
"error": {
"isTrusted": true
}
}
这是我的 API 端点的结尾(也许响应设置有问题?):
const PDFBuffer = await this.mreport.generateOfferPDFAndGetBuffer(pagesReadyToMerge);
console.log('PDF Buffer length and PDFBuffer type: ', PDFBuffer.length, typeof PDFBuffer);
res.set({
'Content-Type': 'application/pdf',
'Content-Length': PDFBuffer.length,
'Cache-Control': 'no-cache, no-store, must-revalidate',
'Pragma': 'no-cache',
'Expires': 0,
});
res.send(PDFBuffer);
这里是触发角度方法的一部分(这条线捕获错误):
offerPdf = await this.service.getOfferPDF(`https://[my_hidden_url]/multirep/offerOfferNo=${offerNo}`);
这是向我的 api 发出请求的服务方法:
getOfferPDF(url: string): Promise<any> {
return new Promise((resolve, reject) => {
this.http.get(url, { responseType: 'blob' }).subscribe(
res => {
if (res) {
resolve(res);
} else {
reject(res);
}
},
error => {
reject(error);
},
);
});
}
根据我对“0 Unknown Error”的研究,它可能与:
const server = express();
const app = await NestFactory.create(AppModule,
new ExpressAdapter(server)
);
app.enableCors();
附加信息:
我上面提供的错误对象来自数据库(角度错误处理系统捕获并保存在那里)所以我真的不知道在浏览器控制台中显示的是什么错误——它可能与状态 0 不同。