小编Ste*_*sel的帖子

部署到生产 Netlify 的 Vue CLI 3 PWA 给出了工作箱错误:bad-precaching-response ..._redirects?__WB_REVISION__...404

这个问题只发生在 Netlify 的生产环境中。它不会出现在开发环境中。通常,我会潜伏并搜索以找到答案,或者将相关答案中的一些东西放在一起,但是这个让我很难过......

我有一个在 Netlify 上运行的 Vue CLI 项目,它设置了一个过去部署过的 PWA。Service Worker 应该正在运行,并且可以安装该应用程序以供离线使用。

现在它在控制台中给了我这个错误:

Uncaught (in promise) bad-precaching-response: bad-precaching-response :: [{"url":"https://<domain>/_redirects?__WB_REVISION__=d38a2b58df330c85e0029eecf71d7c26","status":404}]
    at l.o (https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-precaching.prod.js:1:1749)
    at async Promise.all (index 0)
    at async l.install (https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-precaching.prod.js:1:1221)
Run Code Online (Sandbox Code Playgroud)

因此,当工作箱执行此操作时,它似乎用 404 将我的“_redirects”文件踢出。

我曾尝试将 _redirects 更改为 netlify.toml 文件,其中重定向内容在 .toml 文件中的格式正确,但它仍然失败,这是相同的错误消息,只是“netlify.toml”在错误中替换了“_redirects” .

我还尝试将相同的代码库部署到新的 Netlify 版本(认为这可能是他们资源的缓存问题),但问题仍然存在。

我猜想这可能是 Workbox 无法编译资产或为与重定向相关的文件提供错误名称的问题。但这也没有意义,因为当我在本地和 Netlify 生产环境中运行 build 命令时,它们都应该由托管在 cdn 上的相同代码处理。

这是从工作箱发送错误的代码块:

    const isValidResponse = cacheWillUpdateCallback ?
      // Use a callback if provided. It returns a truthy value if valid.
      cacheWillUpdateCallback({event, request, response}) :
      // Otherwise, …
Run Code Online (Sandbox Code Playgroud)

redirect vue.js progressive-web-apps netlify workbox

4
推荐指数
1
解决办法
1565
查看次数