问题标签 [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 回答
6503 浏览

angular - Angular 2 Ahead-of-Time 编译器:我必须公开所有类属性吗?

Angular 2 rc 6, typescript 2, node 4.5.0,npm 2.15.9Windows 7

我正在尝试从即时编译转移到提前编译,并且我依赖这些资源:

我知道我需要运行编译器ngc来生成ngfactory.ts文件,并且我需要更改main.ts为使用platformBrowser而不是platformBrowserDynamic引导。我遇到了障碍,不知道如何进行。

1.我已经确认应用程序使用即时编译运行没有错误。我main.ts的是:

2.我从生产文件夹中清除了所有应用程序文件,但保留了第 3 方库(例如:Angular 2、Angular 2 Material)

3.我运行"node_modules/.bin/ngc" -p ./这个运行没有输出到控制台。我看到我.ngfactory.ts的每个.ts组件和模块都有一个文件。我还看到.css.shim.ts每个包含.css组件样式的文件。另外,.js.js.map文件已被转译并放置在生产目录中

4.如果此时我尝试运行该应用程序,我会看到包含组件模板404 not found的所有文件的错误.html

5.我手动将所有模板文件 ( .html) 移动到生产目录并运行应用程序。它运行良好,但它仍然使用即时编译(255 个请求,包括compiler.umd.js

6.我将我的更改main.ts为:

就其本身而言,这没有任何区别,因为尚未编译新代码。但是,我不知道从这里做什么。

我应该再跑ngc一次吗?如果是这样,我会收到很多类型的错误:

使用 AoT 编译是否意味着我必须公开我的所有类属性?我错过了一步吗?

0 投票
2 回答
2743 浏览

angular - Angular2 中的 AoT(或提前编译)是什么?

提前编译(或 AoT)是 Angular2 中提供的一项功能。但是我在官方网站上找不到很好的解释。

有人可以给它一个明确的定义吗?

0 投票
9 回答
9116 浏览

angular - 使用 Rollup for Angular 2 的 AoT 编译器并导入 Moment.js

我正在尝试遵循 Angular 2 的官方 AoT 指南,并且在我的应用程序中使用 Moment.js。Moment.js 在我的packages.json文件中,我使用的是 2.15.0 版本。到目前为止,我一直在这样导入它:

但是当我到达必须运行汇总的部分时,我最终会遇到以下错误:

无法调用命名空间(“时刻”)

这似乎与我根据导入时刻的方式有关。那么,我该怎么做呢?我似乎无法以任何其他方式导入时刻。如果我使用

我得到编译错误

外部模块“时刻”没有默认导出

0 投票
1 回答
508 浏览

angularjs - Angular 2:如何使用 Ahead of Time Compilation 实现延迟路由?

我已经使用 ngc 编译器成功创建了 .ngfactory 文件,并且还使用“platformBrowser().bootstrapModuleFactory(AppModuleNgFactory)”更新了我的 main.ts。

应用程序.routes.ts

现在,当我使用“ng build -prod && ng serve -prod”为我的应用程序提供服务时,它成功托管。但是,当我在浏览器上打开它时,我的控制台向我显示此错误“异常:未捕获(承诺中):错误:找不到模块 'app/starter/starter.module.ngfactory'。”

当我检查我的目录时,文件“确实”存在但找不到它。有没有人面临这个问题?如果是,那么如何解决呢?谢谢。

我正在使用 Angular-cli beta 14。

0 投票
2 回答
2939 浏览

angular - Angular2 AoT - 在组件中设置 module.id 时未定义 module.id

我正面临 Angular2 AoT 的挑战,任何帮助对我来说都是一个大问题,因为我被困住了。

我有一个简单的 hello world 应用程序,它有 main.js、home.module.ts、home.component.ts、home.component.html 和 home.service.ts。此代码在没有 AoT 的情况下使用 Angular2 运行良好。

在我按照说明书中的 angular.io 步骤精确执行 AoT 和汇总后,我收到错误:“未捕获的 ReferenceError:模块未定义”,我不知道为什么会发生这种情况。

我的 Home.Component.ts 标记如下:

有人在外面,请帮助!

0 投票
1 回答
1100 浏览

angular - 为什么 Angular 2 对模板进行 JiT 编译?

在运行时在浏览器中为 Angular 2 HTML 模板进行 JiT 编译的基本原理是什么?

我知道,存在提前编译来解决这个问题,它极大地提高了启动性能。

我不是在问我是否应该使用 JiT 或 AoT 编译。

TypeScript 编译器能够编译JSX,这是否意味着有一天我们将获得对 Angular 2 模板的相同支持来替代@angular/compiler-cli?

0 投票
1 回答
909 浏览

angular - Angular 2“遇到静态解析符号值的错误。” 运行 i18n

我正在尝试运行 i18n 提取工具来翻译我的 angular 2 应用程序。但是当我尝试运行时,我得到:

错误在我的自定义错误处理程序中:

错误处理程序基于这篇文章: https ://www.bennadel.com/blog/3138-creating-a-custom-errorhandler-in-angular-2-rc-6.htm

因此,如果您想查看完整的代码,可以在那里查看。

有谁知道为什么会抛出这个错误?

0 投票
1 回答
238 浏览

angular - Angular AOT/ngc 重复路由定义

我在为延迟加载的 Angular 应用程序设置提前编译时遇到了一些问题。

延迟加载的路由定义在一个app.routes.ts文件中,该文件由app.module.ts. 当我运行ngc的内容app.routes.ts被内联到app.module.ngfactory.ts中时,但该文件还包括原始的导入app.module.ts,然后app.routes.ts再次导入,依此类推...

然后,当我将 AOT 应用程序与 Webpack 捆绑在一起时,我得到了我的路由定义的副本(使用angular2-router-loader),其相对路径无法在两个实例之一上解析(因为一个是内联的并且位于我的目录树的不同级别)。

我该如何解决这个问题?ngc生成原始app.module.ts文件的导入对我来说似乎很奇怪,app.module.ngfactory.ts但我不知道如何防止它。

0 投票
1 回答
806 浏览

angular - Angular2:this.http.get(...).map 不是函数,但仅在 AoT 编译时

我正在使用一项服务来发出 http 获取请求:

这一切都适用于我在开发时使用的 SystemJS。但是,当我将 AoT 编译与 rollup 和 uglify 一起使用时,我不断收到错误消息:

bundle.min.js:7 例外:未捕获(承诺):TypeError:this.http.get(...).map 不是函数

我能找到的只是人们说要添加import 'rxjs/add/operator/map'到 main.ts 文件或 app.module.ts 文件中。我已将此添加到每个相关文件以及添加import 'rxjs/Rx'到所有相关文件中,但似乎没有任何效果..

有没有人成功地将 http 请求与 AoT 编译结合使用?

这是我用于 AoT 的 de tsconfig 文件:

这些是我正在使用的构建命令:

欢迎任何帮助!

0 投票
1 回答
1090 浏览

angular - ngc 在错误的目录中查找

我已@angular/compiler-cli全局安装并将以下tsconfig-aot.json添加到我的客户端目录:

按照角度文档中的建议。然后ngc -p tsconfig-aot.json我在我的客户端目录中运行,但收到​​以下错误:

错误:编译失败。找不到资源文件:C:/Users/George/Source/Repos/docs/client/components/home/client/components/home/home.html

因为该资源不存在.. 我的 home.html 位于C:/Users/George/Source/Repos/docs/client/components/home/home.html, tsc 工作正常,我一直在使用 JIT 编译并且有一个工作应用程序,那么 AOT 在错误的位置查找我的文件是什么?