生产 Angular 7 个应用程序在与 ngx-bootstrap 相关的控制台中产生运行时错误

Production Angular 7 app produces runtime errors in console related to ngx-bootstrap

我有一个 Angular 7 的应用程序,一直在愉快地使用 ngx-bootstrap。一段时间后,我尝试发布该应用程序,但出现以下错误。如果我只是在开发模式下使用该应用程序,一切都很好。我正在使用 Visual Studio 进行开发和发布,但我可以使用 CLI 重现它。显然,ng serve 工作正常,而 ng serve --prod 给出了以下错误(为清楚起见,已删除)。这都和bsDaterangepicker.

有关
Khronos locale error: please load locale "en" before using it
(anonymous) @ main.f09bc86ef36b4bf3b010.js:1
main.f09bc86ef36b4bf3b010.js:1 ERROR Error: Uncaught (in promise): Error: Locale "en" is not defined, please add it with "defineLocale(...)"
Error: Locale "en" is not defined, please add it with "defineLocale(...)"
    at e.writeValue (main.f09bc86ef36b4bf3b010.js:1)
main.f09bc86ef36b4bf3b010.js:1 Khronos locale error: please load locale "en" before using it

我发现 a SO question 我认为可以帮助我解决问题,但没有用。

我曾尝试回溯我的 package.json 的一些修订版,但这似乎无济于事。 Angular 生产构建优化似乎一团糟。就在我准备 post 这个问题时,我尝试 ng serve --prod --optimization=false 似乎解决了这个问题。但显然,这并不理想。这是可以希望在即将推出的 Angular 版本中修复的问题吗?

您使用哪个版本的 ngx-bootstrap? 如果 3.1.1 尝试禁用 "buildOptimizer": false

它看起来像一个错误(因此没有真正的解决方案),并且已在此处报告:

https://github.com/valor-software/ngx-bootstrap/issues/4752

在解决之前可能的解决方法:

  • 降级到 ngx-bootstrap 3.0.1
  • 通过将 buildOptimizer 设置为 false
  • 进行编译

编辑:问题已解决,所以解决方法是将您的 ngx-bootstrap 更新到可用的最新版本