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

Expo应用启动时service-worker注册失败问题求助

解决方案:Expo Service-Worker加载失败(MIME类型text/html)

我之前在新环境部署Expo项目时碰到过完全一样的问题,当时没动自动生成的注册代码就解决了,给你几个靠谱的排查方向:

  • 清除本地缓存,强制重新生成资源
    新机器的缓存可能残留了错误的资源映射,导致请求service-worker.js时返回的是HTML页面(也就是MIME类型错误的核心原因)。先关掉当前的Expo服务,然后依次执行:

    # 清除Expo项目缓存并重启
    expo r -c
    # 清除npm缓存
    npm cache clean --force
    # 重新安装依赖
    npm install
    

    之后再启动项目,大概率能解决路径映射的问题。

  • 统一Expo CLI版本
    旧机器和新机器的Expo CLI版本不一致,可能导致自动生成的service-worker路径或资源结构有差异。先在旧机器上执行expo --version查看版本号,然后在新机器安装对应版本:

    npm install -g expo-cli@x.x.x
    

    把x.x.x替换成旧机器的版本号,之后重启项目即可。

  • 检查Expo配置文件的Web服务设置
    打开项目的app.json或app.config.js,检查web字段下的serviceWorker配置,确保它是默认的正确设置,比如:

    "web": {
      "serviceWorker": {
        "register": true,
        "path": "/service-worker.js"
      }
    }
    

    不要修改这个路径,自动生成的注册代码依赖这个默认路径来加载脚本。

  • 排查端口占用或代理干扰
    19006端口被其他程序占用,或者本地代理工具(VPN、抓包工具等)干扰了请求,都可能导致服务器返回错误的页面。可以尝试:

    • 关闭所有代理工具,重新启动项目
    • 修改Expo的开发端口,避免冲突:
      expo start --port 19007
      
  • 验证service-worker.js的实际存在性
    启动项目后,直接在浏览器访问http://localhost:19006/service-worker.js(如果换了端口就改成对应端口)。如果返回的是HTML页面(比如404页面),说明Expo没有正确生成这个文件。这时候删除项目根目录下的.expo文件夹(Expo的本地缓存目录),然后重新启动项目,让Expo重新生成所有必要的资源文件。

这些方法都不需要修改自动生成的service-worker注册代码,我当时用清除缓存+统一CLI版本的组合就解决了问题,希望对你有帮助!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:43:15