You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测前端应用是否已导入zone-patch-fetch补丁?

检测zone-patch-fetch是否已导入的方法

可以通过以下几种可靠方式检测前端应用是否导入了zone.js/plugins/zone-patch-fetch:

方法一:检查fetch的原始函数备份属性

zone-patch-fetch导入后,会对原生fetch进行包装,并将原始函数存储在fetch.__zone_symbol__original属性中。通过判断该属性是否存在即可检测:

const hasZonePatchFetch = typeof fetch !== 'undefined' && !!fetch.__zone_symbol__original;
console.log(hasZonePatchFetch); // 返回true则说明已导入补丁

方法二:验证fetch返回的Promise类型

补丁会让fetch返回ZoneAwarePromise(Zone.js包装后的Promise),这类Promise带有__zone_symbol__state等Zone专属属性。可以通过以下代码验证:

async function checkZonePatchFetch() {
  if (typeof fetch === 'undefined') return false;
  // 发起无实际请求的fetch调用,避免网络错误影响结果
  const testPromise = fetch('about:blank').catch(() => {});
  return !!testPromise.__zone_symbol__state;
}

checkZonePatchFetch().then(isPatched => console.log(isPatched));

注意事项

  • 若有其他第三方库也对fetch进行了包装,可能会干扰检测结果,但zone-patch-fetch的__zone_symbol__前缀属性是Zone.js专属标识,误判概率极低。
  • 需确保代码在fetch对象可用的环境中执行(即浏览器或支持fetch的Node.js环境)。

内容的提问来源于stack exchange,提问作者Matthieu Riegler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 23:02:42