前端错误日志上报为啥有时候收不到数据?
我在项目里用 navigator.sendBeacon 上报错误日志,本地测试都能发出去,但线上偶尔就收不到,特别是一些白屏或者卡死的场景。是不是这些情况下 sendBeacon 也失效了?
我试过换成 new Image().src 的方式,但还是不稳定。有没有更可靠的上报方案?比如在页面 unload 的时候强制发送?
window.addEventListener('error', (e) => {
const log = { msg: e.message, file: e.filename, line: e.lineno };
navigator.sendBeacon('/log', JSON.stringify(log));
});
首先在你的主题 functions.php 里添加一个接收日志的 REST API 端点:
然后前端改成这样:
fetch 比 sendBeacon 更靠谱,而且可以设置超时。要是还不行,考虑用第三方监控插件,省心多了,虽然可能要花钱。折腾这些上报机制真是够累的,但为了用户体验没办法啊。