【问题标题】:Chunk (cached) load error with angular 4角度 4 的块(缓存)加载错误
【发布时间】:2017-09-13 06:57:04
【问题描述】:

我有一个带有一些延迟加载路线的 Angular 4 应用程序。 webapp 部署在 wildfly 服务器上。 通常当我更新包并尝试使用该应用程序时,我会得到这个

7.67f0bdb1c002c6632088.chunk.js 加载资源失败:服务器响应状态为 404(未找到) vendor.bb65efd8883ae143b006.bundle.js:1 ERROR 错误:未捕获(在 承诺):错误:加载块 7 失败。错误:加载块 7 失败的。在 HTMLScriptElement.n (inline.c073b632003c3be717dd.bundle.js:1) 在 HTMLScriptElement.o (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 Object.onInvokeTask (vendor.bb65efd8883ae143b006.bundle.js:1) 在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 r.runTask (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 e.invokeTask [as 调用] (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 W (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 HTMLScriptElement.q (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 HTMLScriptElement.n (inline.c073b632003c3be717dd.bundle.js:1) 在 HTMLScriptElement.o (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 Object.onInvokeTask (vendor.bb65efd8883ae143b006.bundle.js:1) 在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 r.runTask (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 e.invokeTask [as 调用] (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 W (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 HTMLScriptElement.q (polyfills.3d0670849efe6dd6a541.bundle.js:1)在你 (polyfills.3d0670849efe6dd6a541.bundle.js:1)在你 (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 polyfills.3d0670849efe6dd6a541.bundle.js:1 在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 Object.onInvokeTask (vendor.bb65efd8883ae143b006.bundle.js:1) 在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 r.runTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在o (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 e.invokeTask [as 调用] (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 W (polyfills.3d0670849efe6dd6a541.bundle.js:1) w @ vendor.bb65efd8883ae143b006.bundle.js:1 7.67f0bdb1c002c6632088.chunk.js 加载资源失败:服务器响应状态为404(未找到) vendor.bb65efd8883ae143b006.bundle.js:1 ERROR 错误:未捕获(在 承诺):错误:加载块 7 失败。错误:加载块 7 失败的。在 HTMLScriptElement.n (inline.c073b632003c3be717dd.bundle.js:1) 在 HTMLScriptElement.o (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 Object.onInvokeTask (vendor.bb65efd8883ae143b006.bundle.js:1) 在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 r.runTask (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 e.invokeTask [as 调用] (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 W (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 HTMLScriptElement.q (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 HTMLScriptElement.n (inline.c073b632003c3be717dd.bundle.js:1) 在 HTMLScriptElement.o (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 Object.onInvokeTask (vendor.bb65efd8883ae143b006.bundle.js:1) 在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 r.runTask (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 e.invokeTask [as 调用] (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 W (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 HTMLScriptElement.q (polyfills.3d0670849efe6dd6a541.bundle.js:1)在你 (polyfills.3d0670849efe6dd6a541.bundle.js:1)在你 (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 polyfills.3d0670849efe6dd6a541.bundle.js:1 在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 Object.onInvokeTask (vendor.bb65efd8883ae143b006.bundle.js:1) 在 t.invokeTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在 r.runTask (polyfills.3d0670849efe6dd6a541.bundle.js:1)在o (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 e.invokeTask [as 调用] (polyfills.3d0670849efe6dd6a541.bundle.js:1) 在 W (polyfills.3d0670849efe6dd6a541.bundle.js:1) w @ vendor.bb65efd8883ae143b006.bundle.js:1

我确定这是浏览器缓存问题,因为如果我按 ctrl+shift+F5 应用程序运行正常。

那么我可以使缓存浏览器失效吗?或者在文件名中添加版本/时间戳?

非常感谢 F

【问题讨论】:

  • 我认为你可能需要实现一个Angular ServiceWorker,它可以检测到应用程序的新版本已经部署到服务器,然后你可以提示用户更新到新版本。
  • “可以提示用户更新到新版本”是什么意思?它应该对用户透明
  • 如果用户正在编辑一些数据,而你“透明地”推送新版本,这会导致浏览器重新加载应用程序而用户丢失编辑怎么办?不是很好的用户体验,因此您提示或显示通知。就像您在手机上收到有关任何应用程序更新的通知一样。您通知用户并让他们选择何时更新到新版本。不要强迫他们。
  • 这不是我的情况,我的应用程序是仅在桌面上运行的网络应用程序。一旦用户打开应用程序,如果我在应用程序服务器上更新版本,用户就会使用旧应用程序,直到刷新浏览器。
  • 用户使用旧的应用程序,直到他们刷新。如果他们几天不刷新怎么办,只需打开他们的 PC 并打开应用程序。我一直这样做。您需要向他们推送有新版本的通知。而且您仍然会遇到问题,如果您推送该新版本会自动刷新浏览器,结果您可能会在他们正在输入编辑时这样做。

标签: angular caching browser routes chunks


【解决方案1】:

我试图更好地解释我的问题以得到这个错误.. 我在 Wildfly 上运行了 ng 应用程序,并且构建在一个 war 文件中。

  1. 使用 1.5 版部署战争应用
  2. 转到应用并使用它...
  3. 部署 1.6 版
  4. 在不关闭浏览器的情况下,我只需刷新页面就会出现错误
  5. 使用 CTRL+SHIFT+R 刷新页面,应用正常运行

我几乎可以肯定问题出在浏览器缓存上。我不知道有什么办法可以解决它。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      我通过从当前版本降级解决了这个问题。你可以看到更多 Angular 5 with Angular cli non-lazy loading modules in the router

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-28
        相关资源
        最近更新 更多