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 Answer,GitHub Issue),但无法找到问题的根本原因/原因。首先,我不知道如何调试这个。
我需要有关如何调试此问题或可能的原因的指导。任何答案都将受到高度赞赏。
谢谢。
尝试跑步
let w = await fetch("/sw.js", { redirect: "error" })
console.log(w)
Run Code Online (Sandbox Code Playgroud)
并检查它重定向到哪里
| 归档时间: |
|
| 查看次数: |
1034 次 |
| 最近记录: |