Angular 角度加载生产区块文件在部署后失败

Angular 角度加载生产区块文件在部署后失败,angular,http,nginx,jenkins,angular-cli,Angular,Http,Nginx,Jenkins,Angular Cli,我的客户端整天都在打开浏览器,所以在我部署后,他们会看到应用程序损坏,需要重新加载页面来修复 由于@angular/cli生产生成添加了无缓存哈希,服务器无法加载区块文件 错误:错误:未捕获(承诺中):错误:加载区块11失败。 我想在部署后重新加载页面 这些是我的工具: 我有权访问我的NGINX配置 我有权访问詹金斯(蓝海) 我已经在项目中实现了HttpClient拦截器 我管理了路由的错误,替换了它的错误处理程序,并在它发现加载区块时重新加载 // Keep the original err

我的客户端整天都在打开浏览器,所以在我部署后,他们会看到应用程序损坏,需要重新加载页面来修复

由于@angular/cli生产生成添加了无缓存哈希,服务器无法加载区块文件

错误:
错误:未捕获(承诺中):错误:加载区块11失败。

我想在部署后重新加载页面

这些是我的工具:

  • 我有权访问我的NGINX配置
  • 我有权访问詹金斯(蓝海)
  • 我已经在项目中实现了HttpClient拦截器

我管理了路由的错误,替换了它的错误处理程序,并在它发现加载区块时重新加载

// Keep the original error handler
const oldHandler = this.router.errorHandler;
// Replace route error handler
this.router.errorHandler =  (err: any) => {
  // Check if there is an error loading the chunk
  if (err.originalStack && err.originalStack.indexOf('Error: Loading chunk') >= 0) {
    // Check if is the first time the error happend
    if (localStorage.getItem('lastChunkError') !== err.originalStack) {
      // Save the last error to avoid an infinite reload loop if the chunk really does not exists after reload
      localStorage.setItem('lastChunkError', err.originalStack);
      location.reload(true);
    } else {
      // The chunk really does not exists after reload
      console.error('We really don\'t find the chunk...');
    }
  }
  // Run original handler
  oldHandler(err);
};

我希望它能帮助您

我解决了这个问题,将我的应用程序移动到AWS并将文件保存在S3中

参考此链接这是另一个问题,我的构建工作正常,该问题仅适用于在服务器上安装新捆绑包后不刷新页面的用户。您可以使用websockets在新构建后触发页面重新加载,但这有点过分了检查相同问题的答案:我将其放置在
app.component.ts
构造函数中,但它不起作用。因此,您将所有块保存到s3中,以便在部署后它们仍然在s3中,但这是否意味着在用户刷新页面之前,用户的应用程序将显示一个过时的版本?这是正确的@Benno,我的问题是,部署新版本后应用程序崩溃。您可以通过检查S3存储桶中JSON文件的版本号来处理这种情况,如果不匹配,请刷新应用程序。@Eugeniovalieras您可以详细介绍一下您的解决方案吗?用代码什么的?将文件移动到s3很难进行足够的描述