我正在尝试将服务工作者添加到我们现有的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));
但是我遇到了这个错误:
未捕获的(在 promise 中)DOMException:注册 Service Worker 失败:脚本具有不受支持的 MIME 类型('text/html')。
ERROR Error:未捕获的(在 promise 中):SecurityError:注册 Service Worker 失败:脚本具有不受支持的 MIME 类型('text/html')。在 resolvePromise (polyfills.3e9ea997ddae46e16c09.bundle.js:1)
在我的个人小应用程序中,我做了同样的事情,没有任何错误。我们遇到这个错误的应用程序非常庞大,有很多第三方库,我读过可能会出现问题。
请问您能帮助我吗?
此外,我正在检查自己的应用程序以查找可能的差异,但我查看了开发工具中的网络选项卡,注意到应该由服务工作者缓存的文件始终被加载。这是正确的行为吗?