如何调试 angular 2 次 aot 故障

How to debug angular 2 aot failures

I have an angular 2 app generated by ng cli.

- When I run ng build (or) ng build --prod --aot=false and serve up the page things just work fine.
- But when I try to enable aot by running ng serve --aot=true and serve up, the page breaks with multiple DI errors like below

Very hard to debug. Any idea on how to debug these issues?

异常:没有提供选项!
error_handler.js:59 原始堆栈跟踪:
ErrorHandler.handleError@error_handler.js:59
(匿名)@ application_ref.js:272
webpackJsonp.679.ZoneDelegate.invoke@zone.js:229
onInvoke @ ng_zone.js:271
webpackJsonp.679.ZoneDelegate.invoke@zone.js:228
webpackJsonp.679.Zone.run@zone.js:113
(匿名)@ zone.js:509
webpackJsonp.679.ZoneDelegate.invoke任务@zone.js:262
onInvokeTask @ ng_zone.js:262
webpackJsonp.679.ZoneDelegate.invoke任务@zone.js:261
webpackJsonp.679.Zone.run任务@zone.js:151
drainMicroTaskQueue @ zone.js:405

您是否有机会使用:angular2-logger?我遇到了完全相同的错误并发现即使我实际上没有使用我必须为 --aot 提供的选项。

例如:在您的 AppModule 中必须进行以下导入:

import {Logger, Options} from "angular2-logger/core";

然后在您的提供商列表中确保添加选项:

providers: [
  Logger,
  Options // <-- this is key
]

确保 AOT 包含 "Options"。

现在,我是怎么知道的?该错误提示您找不到 "Options"。因此,我使用开发人员工具查看使用 sourceMaps 生成的源代码(我查看了 main.bundle.js)。在那里我搜索了字符串 "Options" 并且唯一的命中也给了我最后的提示:

__WEBPACK_IMPORTED_MODULE_9_angular2_logger_core__["Options"])

这让我在查看文档后意识到我还必须提供选项。

希望这对您有所帮助。 :)