首页 > 解决方案 > 工兵和服务人员

问题描述

这更像是一个服务工作者的问题,尽管它可能更具体到Sapper。我真的不知道,因为我是第一个管理 Service Worker 的人,我几乎没有使用过它们,而且经常觉得它们很痛苦。

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

Brave 正在发生这种情况,但在 Opera 中表现相同,并且看起来像是一般的 Chromium 场景。我不使用 Firefox 或 Safari,但可能很快会进行测试,看看那里会发生什么行为。

这是一个片段,展示了我如何尝试注销 Service Worker。

https://youtu.be/Cb24I_fEklE

标签: serviceworkersapper

解决方案


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

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,
  },

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

const dev = process.env.NODE_ENV === "development";

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

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,
  },

推荐阅读