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

React转PWA时ServiceWorker注册失败 提示MIME类型不支持

React PWA部署Vercel时Service Worker注册报unsupported MIME type (text/html)解决方法

问题核心原因

报错本质是访问https://frontend-calyaan.vercel.app/service-worker.js时,服务端没有返回预期的JS脚本,而是返回了text/html类型的内容(绝大多数情况是Vercel单页应用配置的兜底index.html页面)。Service Worker注册要求脚本必须返回application/javascript类型的MIME值,拿到HTML内容就会直接抛出注册失败错误。

解决步骤

  • 确认Service Worker文件位置
    编译后的service-worker.js必须放在站点根目录可直接访问的位置:原生React项目放在public文件夹下,使用Workbox、vite-plugin-pwa、CRA PWA模板等自动生成SW的工具时,要检查构建配置确保SW产物输出到构建结果的根目录,不要嵌套在assets等子路径下。
  • 配置Vercel路由规则避免SW路径被兜底拦截
    在项目根目录新建vercel.json配置文件,优先匹配SW路径,避免其走SPA的HTML重写规则,参考配置如下:
{
  "rewrites": [
    {
      "source": "/service-worker.js",
      "destination": "/service-worker.js"
    },
    {
      "source": "/(.*)",
      "destination": "/index.html"
    }
  ]
}

注意SW的匹配规则必须放在通用路由兜底规则之前,否则不会生效。

  • 校验部署结果
    重新部署后直接在浏览器访问你的SW地址,确认页面返回的是JS代码而非HTML内容,在网络面板检查响应头的Content-Type字段值为application/javascript即可正常注册。
  • 排查常见坑点
    • 注册Service Worker时不要写错脚本路径,路径拼写错误会触发Vercel的404兜底,同样返回HTML内容
    • 如果修改配置后仍不生效,清除Vercel项目的构建缓存后重新触发部署,避免旧构建产物或缓存规则干扰
    • 不要给Service Worker设置超出其存放路径的注册scope,默认根路径注册的场景下SW文件必须存放在站点根目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:27:16