脚本资源位于重定向后面,这是不允许的 - Service Worker

Bal*_*i M 6 typescript webpack service-worker angular

我在我的Angular应用程序中使用 Service Worker,并且在我的本地主机中一切正常。但是当我尝试推送此代码并将其部署到开发/差异环境中时,出现以下错误

Service worker registration failed: SecurityError: Failed to register a ServiceWorker for scope ('https://a.b.czoo.org/') with script ('https://a.b.czoo.org/sw.js'): 
The script resource is behind a redirect, which is disallowed.
Run Code Online (Sandbox Code Playgroud)

注意:提到的 URL ( https://abczoo.org/ ) 是根域格式。(刚刚在相应位置添加了 a、b 和 czoo)。我的代码部署在自定义分支上,最终 URL 将类似于“https://abczoo.org/AB-123”,其中 AB-123 是我的分支名称。

(更多上下文...)

我在我的服务工作者文件中使用打字稿。该文件将位于不同的位置,在构建过程中,Webpack 使用ts-loader和转换该文件worker-loader,并将该文件放入将在文件中引用的应用程序根文件夹中src/app.component.ts。像这样,

应用程序组件.ts

navigator.serviceWorker.register('/sw.js', { scope: '/' }).then(
  (): void => {
    console.log('Service worker registered');
  },
  (error): void => {
    console.error(`Service worker registration failed: ${error}`);
  },
);
Run Code Online (Sandbox Code Playgroud)

该服务工作线程文件是通过entryWebpack 配置中的选项导入的。(这就是本地环境中发生的情况)

webpack.config.js

entry: {
  vendor: config.vendor.packages,
  boot: './app/index.aot.ts',
  sw: './app/**/**/sw.ts',
},
module: {
  rules: [
    {
      test: /\.sw\.ts$/,
      use: [
        {
          // this is expected to generate new sw.js file in the root which is referenced in app.component
          loader: 'worker-loader',
          options: {
            filename: "[name].js",
            publicPath: "/",
          },
        },
        {
          loader: 'ts-loader',
          options: {
            transpileOnly: true,
            happyPackMode: true,
          },
        },
      ],
    },
  ]
},
Run Code Online (Sandbox Code Playgroud)

我的构建成功,但当我尝试访问开发 URL ( https://abczoo.org/AB-123 ) 时,我收到上述错误。

检查了以下问题(SO AnswerGitHub Issue),但无法找到问题的根本原因/原因。首先,我不知道如何调试这个。

我需要有关如何调试此问题或可能的原因的指导。任何答案都将受到高度赞赏。

谢谢。

Dim*_*ava 2

尝试跑步

let w = await fetch("/sw.js", { redirect: "error" })
console.log(w)
Run Code Online (Sandbox Code Playgroud)

并检查它重定向到哪里