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

如何让Create React App的Service Worker忽略指定URL?

解决Create React App中Service Worker不忽略指定URL的问题

看起来你遇到的问题是,虽然配置了navigateFallbackWhitelist来排除/__开头的URL,但这些请求还是被Service Worker导向了index.html。这可能是因为正则表达式的逻辑问题,或者缺少了让Service Worker完全绕过这些URL的关键配置,下面一步步帮你解决:

第一步:修正navigateFallbackWhitelist的正则逻辑

你的现有配置里,navigateFallbackWhitelist的正则写法存在逻辑冗余,而且可能因为语法细节导致规则未生效。你需要明确:只有非/__、非/que开头的URL才触发回退到index.html,把规则合并成一个精准的正则:

navigateFallbackWhitelist: [/^(?!\/__|\/que).*/],

这个正则的意思是:匹配所有既不是以/__开头,也不是以/que开头的URL,只有这些URL才会触发回退逻辑。这样/__和/que开头的URL就会被排除在外,不会被Service Worker强制导向index.html。

第二步:添加Runtime缓存规则,让指定URL完全绕过Service Worker

如果希望Service Worker完全不处理这些URL(包括不缓存、不拦截请求),还需要在SWPrecacheWebpackPlugin的配置中添加runtimeCaching规则,明确让这些URL直接走网络请求:

new SWPrecacheWebpackPlugin({
  // 修正原有正则的语法错误(之前结尾多了一个/)
  dontCacheBustUrlsMatching: /\.\w{8}\./,
  filename: "service-worker.js",
  logger(message) {
    if (message.indexOf("Total precache size is") === 0) {
      return;
    }
    if (message.indexOf("Skipping static resource") === 0) {
      return;
    }
    console.log(message);
  },
  minify: true,
  navigateFallback: publicUrl + "/index.html",
  navigateFallbackWhitelist: [/^(?!\/__|\/que).*/],
  staticFileGlobsIgnorePatterns: [/\.map$/, /asset-manifest\.json$/],
  // 添加这部分规则,让指定URL绕过Service Worker
  runtimeCaching: [
    {
      urlPattern: /^\/__/,
      handler: "networkOnly", // 完全绕过缓存,直接走网络请求
      options: {
        cache: {
          name: "ignored-__-urls"
        }
      }
    },
    {
      urlPattern: /^\/que/,
      handler: "networkOnly",
      options: {
        cache: {
          name: "ignored-que-urls"
        }
      }
    }
  ]
}),

这里的networkOnly处理器会告诉Service Worker,对于匹配规则的URL,直接使用浏览器的网络请求,不会触发任何缓存或回退逻辑。

额外注意:修正原有配置的语法错误

你之前的dontCacheBustUrlsMatching正则多了一个结尾的/,这会导致配置解析异常,影响其他规则的生效,已经在上面的代码里修正了。

完成这些修改后,重新构建你的应用,Service Worker就会正确忽略/__和/que开头的URL,不会再把它们导向index.html了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:24:06