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

TypeError致Next.js应用Vercel部署失败,本地构建正常求解决

解决Next.js部署Vercel时abortcontroller-polyfill导致的构建失败问题

错误原因

这个构建错误是由于abortcontroller-polyfill包试图修改Node.js环境中只读的Request对象属性导致的。Vercel使用的Node.js版本原生支持AbortController和Request API,而该polyfill仍尝试强行覆盖这些原生API,触发了只读属性修改的报错。本地环境可能因为Node版本较低或环境差异,原生API未被启用,所以没有出现这个问题。

解决方案

1. 直接移除不必要的polyfill依赖

如果你的应用不需要兼容不支持AbortController的旧环境,直接卸载并清理相关代码:

  • 卸载依赖:
    npm uninstall abortcontroller-polyfill
    # 或使用yarn
    yarn remove abortcontroller-polyfill
    
  • 检查项目代码,删除所有导入该polyfill的语句,比如:
    import 'abortcontroller-polyfill/dist/polyfill-patch-fetch';
    // 或
    require('abortcontroller-polyfill/dist/polyfill-patch-fetch');
    

2. 条件导入polyfill(如需兼容旧环境)

如果必须兼容不支持原生API的环境,添加条件判断,仅在需要时加载polyfill:

if (typeof AbortController === 'undefined') {
  import('abortcontroller-polyfill/dist/polyfill-patch-fetch');
}

3. 处理间接依赖引入的polyfill

如果abortcontroller-polyfill是某个第三方依赖间接引入的,可通过以下方式处理:

  • 查找依赖来源:
    npm ls abortcontroller-polyfill
    # 或yarn
    yarn why abortcontroller-polyfill
    
  • 升级对应的第三方依赖,看是否已移除该polyfill;若无法升级,可在package.json中强制忽略:
    • npm用户添加:
      "overrides": {
        "abortcontroller-polyfill": false
      }
      
    • yarn用户添加:
      "resolutions": {
        "abortcontroller-polyfill": false
      }
      

验证

修改完成后,先在本地执行npm run build确认构建正常,再重新部署到Vercel即可解决该报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:15:15