问题标签 [angular2-aot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4339 浏览

angular - 如何处理 angular2 延迟加载路由失败

我正在使用 Angular 2 惰性路由。客户端与 webpack2 捆绑使用 AOT 和 angular-router-loader 以延迟加载子级。当浏览器连接时,一切都按预期工作,即我可以成功地将路由器导航到延迟加载的模块,成功加载块并且我可以查看组件等。

但是,如果我模拟断开连接(例如,通过使用离线 chrome 开发人员工具选项),路由会按预期失败,因为它无法加载相关块。错误是“加载块 [块号] 失败”

之后没有路由命令起作用,就像路由器坏了一样。

我尝试使用全局 ErrorHandler 处理错误。这个想法是,也许我可以在它破坏路由器之前捕捉到错误,但到那时似乎为时已晚。在我发现错误时,路由器无法正常工作。

自定义错误处理程序有效,因为打印了“离线模式”消息。注入也有效,路由器不为空,但是路由器导航不起作用,路由器承诺没有解决也没有被拒绝。

我想要完成的是处理错误(例如向用户显示信息性消息),同时让路由器处于工作状态,以便用户稍后可以导航(当互联网连接恢复时)无需重新加载整个页面。

更新 1:尝试在没有 aot 和 webpack 的情况下进行复制

为了查看这是否是角度路由器问题,我尝试查看尝试使用 jit 编译脱机工作时会发生什么。我使用 : angular router plunker导航到登录选项卡,切换到离线并按下登录。当客户端尝试加载管理模块时,记录了许多“错误:XHR 错误加载”错误。最终导航失败,但此后路由导航并没有中断。我能够导航到其他选项卡,并且在切换回在线后,我什至能够导航到管理员。也许问题在于 angular-router-loader webpack 插件如何尝试加载模块。

更新 2:似乎是一个已知问题

功能:更强大的路由器模块加载器

0 投票
1 回答
194 浏览

angular - 将自定义 TS 定义传递给 Angular 2 AOT 编译器

我正在使用ngc编译器提前编译我的 Angular 2 应用程序。在我的应用程序的一部分中,我使用了默认情况下 TypeScript 未涵盖的 Notification API。当我运行时ngc,它抱怨:

我有一个用于 window.Notification 对象及其方法的自定义 TS 定义文件,但是我如何告诉 ngc 编译器该文件位于何处?

我的 tsconfig.json 文件:

0 投票
0 回答
191 浏览

angular - app.module.ngfactory 未构建 angular2 aot 使用 webpack 编译

我正在尝试创建一个使用此平均堆栈分解的种子,但还结合了当前 wip 的 angular-cli 和 material2,但我无法让我的 npm build:prod 工作。它没有构建 app.module.ngfactory

我没有使用 ng build 我在 package.json 文件中创建了自己的 webpack 文件和自己的脚本

Windows 10,节点 @ 6.9.2,angular-cli @ 2.2.3,webpack @ 2.2.0-rc.0,@angular/materail @ 2.0.0-alpha.11-3

非常感谢任何帮助/建议!

这是 main.aot.ts

这是我的 app.module

这是我的 gh MEAN2.0_seed的链接

我希望有人能帮帮忙!

0 投票
1 回答
160 浏览

angular - 延迟加载 + 在 angular2 项目上应用 AOT 与 systemjs builder 捆绑项目

我在哪里可以找到关于在 Angular2 SystemJs 项目(带有延迟加载模块)上应用 aot 和捆绑的示例 Angular 2 项目?

我通过 angular-cli 做到这一点。但我怎么能用systemjs做到这一点?

0 投票
0 回答
159 浏览

angular - Angular 2 Aot:选择器“app”不匹配任何元素

我按照角度食谱中的步骤生成了aot,

现在我有 aot 文件夹,其中包含 app、dist、node_modules、index-aot.html、shim.min.js 和 zone.min.js

当我运行 index-aot.hmtl 时,我看到以下错误

选择器“my-app”不匹配任何元素

0 投票
1 回答
618 浏览

angular - Angular 2 AOT 和延迟加载,无需使用 Angular CLI

我正在使用一个非常简单的 Angular 2 应用程序,并且我没有使用 Angular CLI(为了这个特定的问题,请不要建议我使用 CLI)。使用 JIT 编译器时,站点运行没有任何问题。急切加载的模块和延迟加载的模块都很好。

我可以成功运行 AOT 编译器,然后使用 Rollup 执行摇树,如Angular 2 文档中所述。执行此操作时,站点运行时对于急切加载的模块没有任何问题,但是在尝试转到急切加载的模块时出现错误。这是错误消息:(GET http://atticus.local/app/contacts/contacts.module.ngfactory 404 (Not Found)这是我试图延迟加载的模块)

一个非常基本的问题开始:

  • 在进行 AOT 和摇树时使用延迟加载是否有意义?你还有福利吗?

假设上述问题的答案是肯定的,我想知道如何让 AOT 编译和延迟加载一起工作?我在 Angular CLI 的 GitHub 问题上看到有人提出了这个问题,而且看起来有一些解决方案已经到位。这假设您使用的是 CLI,而我不是。我在运行 AOT 时的输出中确实注意到,没有为我的延迟加载模块创建*.ngfactory.ts也没有*.ngsummary.json创建,而只是为我急切加载的模块创建。这可能是有道理的?

作为参考,我为 AOT 运行的命令ngc -p tsconfig-aot.json如下tsconfig-aot.json

然后我跑去rollup -c rollup-config.js汇总执行摇树。这是rollup-config.js

请让我知道我是否可以提供更多信息或更清楚。谢谢!

0 投票
1 回答
5049 浏览

angularjs - [at-loader] 中的错误找不到模块“./app.component.ngfactory”

我的错误如下:

[at-loader] assets\app\app.module.ngfactory.ts:28:27 中的错误找不到模块“./app.component.ngfactory”。

在我运行 npm run build 后,app.module.ngfactory.ts 按预期创建,但它创建了对我没有/找不到的模块的引用:

从'./app.component.ngfactory'导入*作为import21;

查看aot-compiler链接,我在编译应用程序部分看到以下内容:

好奇的人可以打开aot/app.component.ngfactory.ts以查看原始 Angular 模板语法的中间、编译到 TypeScript 的形式。

我认为我的问题可能来自于当我跑步时

“node_modules/.bin/ngc”-p tsconfig-aot.json

它希望为它正在创建的组件分配一个名称,我不确定该名称是否可以是任何名称,或者它是否需要特定的名称。我尝试了 NgFactory、app.component.ngfactory 和我的项目名称,但这些都没有做出任何我可以看到的更改。我也没有看到在我的 tsconfig-aot.json 文件中指定为 genDir 的文件夹,只有 outDir。

ngc 完成后,在 aot 文件夹(tsconfig-aot.json 中指定为 genDir 的文件夹)中查找 NgFactory 文件的集合。

以下是我的 tsconfig-aot.json 当前包含的内容:

}

如果您需要任何其他信息,请告诉我。我还没有找到任何关于这个的东西,我已经找了两天了。

0 投票
1 回答
897 浏览

aot - AOT:抛出“找不到模块'../aot/app/app.module.ngfactory'”

我正在尝试将 AOT 集成到我的项目 Angular 项目中。它在运行项目时引发错误。

我使用了 systemjs.config 文件如下

我不知道为什么会出现这种类型的错误,请提出解决方案。

0 投票
0 回答
176 浏览

angularjs - ng1 $rootScope 依赖注入到 ng2 在 aot (ng1 -> ng2 混合) 中出现问题

我已经创建了 $rootScope 的以下 RootScopeService 包装器,如下所示,之后我在名为 xService 的 angular2 服务下使用了它。

我用 AOT 编译过,编译成功。然后使用汇总创建构建文件。运行 build.js 文件时出现以下问题

0 投票
1 回答
2006 浏览

node.js - 未处理的承诺拒绝 AOT(提前)Angular 2

我有一个从 ASP.net MVC Web API 获取数据的小型 Angular 2 应用程序。使用身份验证。我正在尝试在 Angular 2 中使用 Ahead Of Time 编译器。我正在运行以下命令

节点模块\.bin\ngc -p src

但我收到以下错误

(节点:13640)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:2):TypeError:'instanceof'的右侧不是对象(节点:13640)DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

有人能告诉我如何解决吗

这是我的目录结构

我已将 tsconfig.json 从根目录移动到 src 文件夹,正如它在此链接中所指示的那样

目录结构

这就是我使用承诺的方式

我已经提供了服务,我从这些服务中返回了这样的承诺:

并在这样的组件中使用它

这是我的 ts.config 文件。