工兵和服务工作者

jhi*_*kok 7 service worker sapper

这更像是一个 Service Worker 问题,尽管它可能更具体到Sapper。我真的不知道,因为我是第一个管理我与 Service Workers 斗争的人,几乎没有使用过它们,并且感觉它们经常让我感到痛苦。

基本上,无论我做什么,我都无法让 localhost:3000 停止加载应用程序的旧副本。我已经以各种方式取消注册服务工作者,包括尝试以编程方式取消注册。我清除了缓存,甚至清除了浏览器中的所有浏览数据。我的 Sapper 开发环境中的服务器没有运行。

这在 Brave 中发生,但在 Opera 中表现相同,并且似乎是一般的 Chromium 场景。我不使用 Firefox 或 Safari,但可能很快就会测试其中的一个,看看那里会发生什么行为。

这是一个剪辑,显示了我如何尝试取消注册 Service Worker。

https://youtu.be/Cb24I_fEklE

小智 7

我使用了这个小技巧,就像一个魅力。在您的 中rollup.config.jsserviceWorker对象中有一个outputs对象。

serviceworker: {
    input: config.serviceworker.input(),
    output: config.serviceworker.output(),
    plugins: [
      resolve(),
      replace({
        "process.browser": true,
        "process.env.NODE_ENV": JSON.stringify(mode),
      }),
      commonjs(),
      !dev && terser(),
    ],

    preserveEntrySignatures: false,
    onwarn,
  },
Run Code Online (Sandbox Code Playgroud)

dev如果尚未声明,则在顶部定义一个变量:

const dev = process.env.NODE_ENV === "development";
Run Code Online (Sandbox Code Playgroud)

现在像这样更改您的服务工作者配置:

serviceworker: !dev && {
    input: config.serviceworker.input(),
    output: config.serviceworker.output(),
    plugins: [
      resolve(),
      replace({
        "process.browser": true,
        "process.env.NODE_ENV": JSON.stringify(mode),
      }),
      commonjs(),
      !dev && terser(),
    ],

    preserveEntrySignatures: false,
    onwarn,
  },
Run Code Online (Sandbox Code Playgroud)