Angular 9 PWA 哈希不匹配(cacheBustedFetchFromNetwork)

mih*_*lzi 2 progressive-web-apps angular angular-service-worker

我有一个 Angular PWA,它无法离线启动(http 错误 504)。当我检查 /ngsw/state 时,出现此错误:

Error: Hash mismatch (cacheBustedFetchFromNetwork): https://example.com/favicon.ico: expected 566d8535a3adc2f7210a8a890bdc50ec4f91f0e3, got 8e076950c4c615772d8d5d753e07377bab9f2f27 (after cache busting)
    at PrefetchAssetGroup.<anonymous> (https://example.com/ngsw-worker.js:734:35)
    at Generator.next (<anonymous>)
    at fulfilled (https://example.com/ngsw-worker.js:174:62))
Latest manifest hash: 5952e5e67f8b4ee7115ef9d519a346712927b608
Run Code Online (Sandbox Code Playgroud)

使用 Angular CLI:9.1.9 节点:12.16.1 Angular:9.1.11

PWA 上的灯塔检查没有给我任何错误,并且为了重定向 apache 服务器上的角度路由,我使用 .htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*) /index.html [NC,L]
Run Code Online (Sandbox Code Playgroud)

有人有想法吗?谢谢!

Igo*_*orW 11

就我而言,问题与我使用 git 部署应用程序(使用接收后 git hook)有关。默认情况下,git 会替换行结尾。这导致服务器上的文件与原始文件不同,并且它们的哈希值也不同。

我比较了服务器上文件index.html的哈希值,它与“ngsw.json”文件中的值不同。

    sha1sum index.html
    04e691dbfae931bfd24513ac63d833bdfee3a1f6  index.html
Run Code Online (Sandbox Code Playgroud)

在我禁用行结尾转换后:

    git config --local core.autocrlf false
Run Code Online (Sandbox Code Playgroud)

再次推送项目问题消失了,sha1sum index.html 向我显示了“ngsw.json”中的保存哈希值。