【问题标题】:Local Angular library using Highcharts breaks in production mode使用 Highcharts 的本地 Angular 库在生产模式下中断
【发布时间】:2019-11-01 00:32:22
【问题描述】:

我编写了一个包装 Highcharts 的 Angular 库以满足我的需求。

在dev模式下本地使用时运行良好,但prod模式的优化似乎打破了它。

问题来自需要添加一些功能的 Highcharts 模块,例如添加新的图表类型(即 TreeMap)。这些模块似乎没有在 prod 模式下加载,导致 Highcharts 错误 (https://www.highcharts.com/errors/17/)。

这是我的第一个 Angular 库,所以配置肯定是错误的,但我找不到问题所在。

我在这个 repo 中推送了该问题的最小重现:https://github.com/Korbraan/angular-library-opti-bug

首先使用ng build charts 构建库,然后尝试使用ng serve --prod 提供它。它坏了,但它适用于ng serve

【问题讨论】:

  • 我已经测试过了。在开发模式以及生产中存在相同的错误:Cannot find module '../../../../dist/charts' -> import { TreeMapModule } from '../../../../dist/charts';
  • 该库需要在应用服务前建好,我在帖子中添加命令。

标签: angular highcharts angular-library


【解决方案1】:

要解决此问题,您必须在构造函数中移动模块初始化:

  constructor() {
    const self = this;

    Treemap(self.Highcharts);
    Heatmap(self.Highcharts);
  }

【讨论】:

  • 谢谢它的工作!为什么这里需要在构造函数中实例化模块?为什么使用 callbackFunction 比使用 chartInstance 事件更好?
  • 我不知道为什么,但它有效。检查此相关线程:github.com/highcharts/highcharts-angular/issues/138chartInstance 事件已添加到包装器中,我不知道它存在。它的工作原理与callbackFunction 相同,所以您的代码是有效的,我的错误。
猜你喜欢
  • 2020-09-14
  • 2019-03-07
  • 1970-01-01
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
  • 2021-02-02
相关资源
最近更新 更多