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

Vaadin PWA启动强制要求联网问题求助

Vaadin PWA启动强制要求联网问题求助

你遇到的这个情况我太懂了——明明本地WildFly服务器已经跑起来了,完全具备离线运行的条件,结果Vaadin PWA一启动就跳出来要联网,确实挺烦人的。我给你几个实用的排查和解决方向:

  • 把在线依赖改成本地打包
    Vaadin默认会从CDN加载一些前端组件资源,这就是离线时出问题的关键。如果是Maven项目,你可以在pom.xml里加上<vaadin.offline>true</vaadin.offline>配置,这样框架会把所有需要的前端资源都打包到你的项目里,彻底不用依赖在线CDN。Gradle项目的话,对应设置vaadin.offline=true就行。

  • 自定义Service Worker跳过联网检查
    Vaadin自动生成的Service Worker可能自带了联网检测逻辑,你可以自己写个自定义的Service Worker脚本覆盖它。在项目的src/main/resources/META-INF/resources/下新建sw.js文件,写个优先用缓存的fetch策略:

    self.addEventListener('fetch', (event) => {
      event.respondWith(
        caches.match(event.request)
          .then((response) => {
            // 不管有没有网,先返回缓存内容,缓存没有再尝试请求(离线时就直接用缓存)
            return response || fetch(event.request);
          })
      );
    });
    

    另外别忘了检查@PWA注解的配置,确保offlinePath这类离线相关参数设置正确,比如指定一个离线时显示的页面。

  • 检查Manifest文件里的在线资源
    看看自动生成的manifest.json,如果里面有引用在线的图标或者其他资源,赶紧把这些资源下载到本地,替换成项目内的相对路径。比如把图标放到src/main/resources/META-INF/resources/icons目录下,然后修改manifest里的图标路径为/icons/xxx.png这种本地路径。

  • 重置浏览器的Service Worker和缓存
    之前你改Chrome的worker服务离线没效果,大概率是旧的Service Worker缓存还在搞事情。打开Chrome开发者工具(F12),切换到Application标签,在Service Workers里点击"Unregister",然后清空Storage下的缓存,重启应用后让新的Service Worker重新注册生效。

这些步骤应该能解决你的离线启动问题,你可以一步步试下,先从修改项目配置打包本地资源开始,这个是最关键的。

备注:内容来源于stack exchange,提问作者Dave Mace

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 14:17:53