问题标签 [angular-compiler-cli]

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 投票
0 回答
2106 浏览

angular - 角度编译器 cli 不工作?

我正在尝试使用Angular 模板编译器来调查它,我知道它处于早期阶段,但 RC5 的文档已经提到它。我创建了一个小的“hello, world”项目,我可以运行ngc,但它从不生成.ngFactory.ts文件,我只看到一个.metadata.json文件。

您可以通过克隆angular 2 quickstart来查看它。运行$(npm bin)/tsc正常,并将'app'目录中的打字稿编译为带有地图文件的javascript。

接下来我按照说明安装了节点模块(升级打字稿):

现在运行$(npm bin)/tsc仍然有效并产生.js.js.map文件。我删除这些文件并运行$(npm bin)/ngc,它会生成.jsand.js.map文件以及两个新文件:

看起来这些文件基本上包含来自装饰器的元数据:

ngc不会向控制台输出任何输出,而且我看不到任何ngFactory应该存在的文件。最初 typescript@next 给了我 2.1.0-dev.20160813,包说未满足的对等依赖期望 1.9.0 所以我安装了 1.9.0-dev.20160627-1.0 但我得到了相同的结果。我也试过$(npm bin)/ngc -p .哪个做同样的事情并$(npm bin)/ngc -p app给出一堆错误,因为它找不到 core-js 类型(Promise、Set、Map 等)。

0 投票
2 回答
10168 浏览

angular - 如何在 Angular cli webpack 中使用提前编译器

有没有办法将 AOT 与 angular cli 一起使用?

我已经安装了模块(@angular/compiler @angular/compiler-cli),当我输入 ngc -p scr 时,它会创建 ngFactory.ts 文件并将其编译为 dist/tsc-out(tsconfig 中的 angular cli 默认值)

不知道如何从这里开始:)

干杯

0 投票
1 回答
946 浏览

angular - Angular 2 编译器-cli 和 less 或 sass

我正在使用带有 angular 2 的 webpack 并让 sass 使用它。我的下一步是让 AOT 工作。我现在卡住了,因为 ngc 在访问我的 scss 文件时失败,因为它找不到导入。

消息是“未找到资源文件...”并引用导入语句。编译器可能首先需要处理 scss 文件是有道理的,但这需要首先构建应用程序,并且需要创建 ngFactories 才能成功构建。

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 投票
1 回答
263 浏览

javascript - 角度指令编译器触发 ng-click 两次

我在我的模板中使用手风琴指令,在手风琴内部我正在添加attr ng-click一个元素。当我单击该元素时,它会触发两次。

小提琴:http: //jsfiddle.net/Lvc0u55v/10071/

代码 :

小提琴:http: //jsfiddle.net/Lvc0u55v/10071/

0 投票
2 回答
1835 浏览

angular - Angular 2 Ahead-of-Time 编译器是否支持 SASS 样式表?

我想再次尝试使用Angular 2Ahead-of-Time 编译。

这将需要我进行重大重构,因为我当前的设置使用需要更改的自定义构建过程。

在开始之前,我需要知道:如果我链接到元数据.scss中的外部文件,styleUrlsAoT 编译器会工作吗?

还是应该先将所有样式转换.css为 CSS 样式表并链接到 CSS 样式表?

自述文件没有讨论这个。

0 投票
1 回答
520 浏览

angular - Ionic 2:ngc 编译失败(元数据发出需要将 sourceFiles 传递给 WriteFileCallback)

我正在尝试使用带有 typescript@next 的 ngc 编译我的 ionic 2 rc 应用程序:

我无法更改我的打字稿版本(@next),因为我需要支持异步/等待。有什么方法可以在不安装 typescript@1.9.0 的情况下修复此错误,如错误消息所示?

我的 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 在错误的位置查找我的文件是什么?

0 投票
1 回答
811 浏览

angular - ngfactory 文件本身是否必须在 Angular 2 AOT 编译中编译?

每当我使用 编译 Angular 2 应用程序时ngc,它都会为每个组件创建.ngfactory.ts文件,然后将所有打字稿编译为 javascript。

但是,当我第一次运行“ngc”时,它会创建ngfactory文件,但只会将其他文件编译为 javascript。这意味着不会生成已编译ngfactory的 javascript 文件。

在第二次运行时,它ngfactory也会编译文件(可能是因为它们是在与源代码相同的文件夹中生成的)。

我的问题是:ngfactories 本身是否应该被编译?它会以任何方式影响应用程序吗?

0 投票
0 回答
488 浏览

angular - 使用 AoT 编译时,ViewChild 找不到并捆绑更大

使用 AoT 找不到 ViewChild

  1. 在获得3th party lib support AoT后,我成功编译,编译时ngc没有错误!
  2. 我将此第 3 方库注入到我的项目中,因此我的项目使用 CLI 使用--aot标志进行编译,并且在编译期间没有错误,但是当在导航器上打开应用程序时,我得到:

ReferenceError: nameColumnHeader 未定义

  1. nameColumnHeader是一个ViewChild()装饰器:

@ViewChild('nameColumnHeader') nameColumnHeader: TemplateRef<any>;

当然我有<template #nameColumnHeader...>里面的HTML。删除此 ViewChild 时,另一个让我遇到同样的问题 #end of material2/sidenav 组件...

我不知道什么是问题,顺便说一句,为什么当我的项目ng serve --prod --aot时 cli 不告诉我有什么问题!

使用 AoT 将 main.js 捆绑得更大

我删除了所有ViewChild()重新编译,--aot一切正常,页面显示正确,但是:
当我使用main.js 的大小进行编译时ng build --prod1836 Ko,而当使用 AoT 编译时,ng build --prod --aotmain.js 的大小为:1860Ko

如果有用

更新:

使用 ViewChild 时需要使用分号!!!奇怪的是,在没有 AOT 的情况下编译时我们可以编写不带分号的 ViewChild,但使用 AoT 你需要分号