【发布时间】:2018-09-03 16:54:46
【问题描述】:
我正在尝试将服务工作者添加到我们现有的 Angular(5.2,CLI 1.7.1)应用程序中。我做了我应该做的一切:
- 我创建了 ngsw-config.json
- 我运行了
ng set apps.0.serviceWorker=true命令,所以我在angular-cli.json中有"serviceWorker": true,。 - 我已经安装了
"@angular/service-worker": "5.2.9" -
我添加到app.module.ts:
import { ServiceWorkerModule } from '@angular/service-worker'; imports: [ ... ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production }), ]
我什至尝试将这段代码(我在某处找到的解决方案)添加到 main.ts
platformBrowserDynamic().bootstrapModule(AppModule).then(() => {
if ('serviceWorker' in navigator && environment.production) {
navigator.serviceWorker.register('/ngsw-worker.js');
}
}).catch(err => console.log(err));
但我收到了这个错误:
Uncaught (in promise) DOMException: Failed to register a ServiceWorker:脚本具有不受支持的 MIME 类型('text/html')。
ERROR 错误:未捕获(承诺中):SecurityError:注册失败 ServiceWorker:脚本具有不受支持的 MIME 类型 ('文本/html')。在 resolvePromise (polyfills.3e9ea997ddae46e16c09.bundle.js:1)
在我自己的个人小应用程序中,我做了同样的事情,并且没有任何错误。我们遇到此错误的应用程序非常庞大。有很多第三方库。我听说他们可能有问题。
你能帮帮我吗?
另外,我正在检查自己的应用程序以查找可能的差异,但我没有查看 devtools 中的网络选项卡,我注意到应该由服务工作者缓存的文件总是被加载.请问这是正确的行为吗?
【问题讨论】:
标签: angular angular-service-worker