我正在尝试使用 WebEssentials.AspNetCore.PWA 将 PWA 集成到我的 .NET Web 应用程序中。
我正在按照本教程 https://medium.com/beginners-guide-to-mobile-web-development/introduction-to-pwa-in-asp-net-core-application-da96c7cc4918
我已经完成了本教程中提到的所有操作。但是我收到以下错误
Uncaught (in promise) TypeError: Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script.
当我查看WebEssentials.AspNetCore.PWA的文档时:https://github.com/madskristensen/WebEssentials.AspNetCore.ServiceWorker]2
应该在标签上方添加以下行</body>
<script>'serviceWorker'in navigator&&navigator.serviceWorker.register('/serviceworker')</script>
而不是这条线,我的有以下行
<script nws-csp-add-nonce='true'>'serviceWorker'in navigator&&navigator.serviceWorker.register('~/serviceworker')</script>
如您所见,我的服务工作者的路径是错误的('~/服务工作者'(。如何修复服务工作线程的此路径错误?
由于波浪号~
而失败
解决方法如下:
禁用注册服务工作进程和清单:
services.AddProgressiveWebApp(new PwaOptions
{
RegisterServiceWorker = false,
RegisterWebmanifest = false,
OfflineRoute = "offline"
});
然后,您可以在_Layout中手动添加它们(其中manifest.webmanifest是wwwroot下的webmanifest.json文件(
<meta name="theme-color" content="#FFFFFF" />
<link rel="manifest" href="/manifest.webmanifest" />
最后添加服务工作线程
<script>'serviceWorker' in navigator && navigator.serviceWorker.register('/serviceworker')</script>