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

基于React/Vite的Tauri桌面应用中Service Worker注册失败问题

Tauri + React 集成Service Worker注册失败问题

我正尝试在基于Tauri的React桌面应用中集成Service Worker,以实现API响应缓存功能。该功能在标准浏览器环境中运行正常,但在Tauri环境下却无法完成Service Worker脚本的注册。

错误信息

Service Worker registration failed: TypeError: Failed to register a ServiceWorker for scope ('https://tauri.localhost/') with script ('https://tauri.localhost/service-worker.js'): An unknown error occurred when fetching the script.

相关代码

main.tsx

import './register-service-worker';
// other imports and code...

register-service-worker.ts

if ('serviceWorker' in navigator) {
  window.addEventListener('load', function () {
    navigator.serviceWorker.register(`${window.location.origin}/service-worker.js`, { scope: '/' })
      .then(registration => {
        console.log('Service worker registered ✅', registration.scope);
      })
      .catch(error => {
        console.error('Service Worker registration failed:', error);
      });
  });
}

service-worker.js

self.addEventListener('install', () => {
  console.log('Service worker installed ✅');
});

self.addEventListener('activate', () => {
  self.clients.claim();
  console.log('Service worker activated ✅');
});

self.addEventListener('message', () => {
  self.skipWaiting();
});

self.addEventListener('fetch', (e) => {
  console.log('🟢 Service worker match :)', e.request.url);
  e.respondWith(
    fetch(e.request).then(res => {
      const clonedResponse = res.clone();
      caches.open('api-cache').then(cache => {
        cache.put(e.request, clonedResponse);
      });
      return res;
    }).catch(error => {
      if (e.request.status !== 403) {
        return caches.match(e.request);
      }
      return Promise.reject(error);
    }),
  );
});

vite.config.ts

import viteStaticCopy from 'vite-plugin-static-copy';

export default {
  plugins: [
    viteStaticCopy({
      targets: [
        {
          src: './src/service-worker.js',
          dest: './',
        },
      ],
    }),
  ],
}

我怀疑问题可能与Tauri环境中路径或作用域的处理方式有关,或是构建后Service Worker脚本的可用性问题。请问是否有人遇到过类似问题,或能提供问题排查的思路?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:08:16