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

Laravel+Vue.js转PWA遇No matching service worker detected错误求助

解决「No matching service worker detected」错误

针对你的Laravel+Vue.js PWA转换问题,核心问题集中在路径配置错误和脚本执行逻辑错误,以下是具体修复方案:

1. 修正资源引用路径

Laravel项目的public目录是Web服务器的根目录,引用资源时无需添加/public/前缀:

修改HTML入口文件的manifest引用

<!-- 原代码 -->
<link rel="manifest" href="/public/manifest.json"/>

<!-- 修改后 -->
<link rel="manifest" href="/manifest.json"/>

修改Service Worker注册路径

<!-- 原代码 -->
navigator.serviceWorker.register('/public/sw.js', { scope: '/' })

<!-- 修改后 -->
navigator.serviceWorker.register('/sw.js', { scope: '/' })

2. 修复Service Worker注册脚本的执行逻辑

带有src属性的<script>标签内的内嵌代码不会被执行,需拆分独立脚本:

<!-- 原代码 -->
<script src="/js/main.min.js?v=4.0.4">
    if ('serviceWorker' in navigator) {
        window.addEventListener('load', () => {
            navigator.serviceWorker.register('/sw.js', { scope: '/' }).then(function (registration) {
                console.log('Signage Lab PWA: ServiceWorker registration successful with scope: ', registration.scope);
            });
        })
    }
</script>

<!-- 修改后 -->
<script src="/js/main.min.js?v=4.0.4"></script>
<script>
    if ('serviceWorker' in navigator) {
        window.addEventListener('load', () => {
            navigator.serviceWorker.register('/sw.js', { scope: '/' }).then(function (registration) {
                console.log('Signage Lab PWA: ServiceWorker registration successful with scope: ', registration.scope);
            });
        })
    }
</script>

3. 调整Workbox配置的输出路径

swDest需使用相对项目根目录的路径,而非绝对路径:

// 原代码
swDest: '/public/sw.js',

// 修改后
swDest: 'public/sw.js',

4. 验证修复效果

完成修改后执行以下步骤:

  • 重新运行Workbox CLI生成Service Worker:workbox generateSW workbox-config.js
  • 清除浏览器缓存(或使用无痕模式测试)
  • 打开浏览器开发者工具「Application」标签,检查Service Worker是否注册成功、manifest是否正常加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:01:21