问题标签 [angular-compiler]

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 回答
1308 浏览

angular - 如何使用 ngc 启动监视模式?

我想做同样的事情,就像我在过去的美好tsc时光中所做的那样:只需调用 a tsc -w,并且在文件更改的情况下,它将即时重新编译。

不幸的是,ngc它甚至似乎对-w标志没有任何反应,甚至它可能的命令行参数也完全没有记录。

但是,ng build 一个--watch标志,同时它也可以创建 AOT 构建。因此,观察模式ngc可能是可能的。

但是怎么做?

0 投票
2 回答
2325 浏览

angular - Angular AOT Compiler - TypeError: this.compiler.analyzeModulesAsync is not a function

I'm trying to follow the ahead of time (AOT) compiler instructions here:

https://angular.io/guide/aot-compiler

The project I'm working on has been developed using the quickstart seed, as described here:

https://angular.io/guide/setup

The project has been working fine without using the AOT compiler, but when I try to follow the instructions to get the AOT compiler working, I get the following error (this is on Windows 8):

My package.json file looks like this:

When I check what version of @angular/compiler I have installed, I get 4.2.2, which appears to be the most current version:

Viewing source on Github, I see that there is a function called analyzeModulesAsync in angular/packages/compiler/src/aot/compiler.ts:

https://github.com/angular/angular/blob/master/packages/compiler/src/aot/compiler.ts

However, when I do a grep on my node_modules folder for analyzeModulesAsync, I only see calls to that function. I don't see a definition for it. In fact, the class definition in the compiler.d.ts appears to have several differences from the compiler.ts file on Github.

I've tried "reinstalling" by deleting the entire node_modules folder and re-running npm install, and the error message is the same.

I do see a somewhat similar question here: Angular AOT failing at compilation (something with angular/compiler-cli), but I don't know enough about npm versioning to know what could be out of whack, or how to fix it.

Any ideas on whether I botched some instructions somewhere, or there is something deeper at work?

SOLUTION

The problem was with the mismatched versions of @angular/compiler-cli and @angular/platform-server in package.json. Once I changed those to "~4.0.0" to match the rest of the angular modules, deleted the node_modules folder and re-ran npm install, the compiler worked.

My working theory is that, because I cloned the quickstart two weeks ago, and ran this command: npm install @angular/compiler-cli @angular/platform-server --save from the tutorial yesterday, that's what lead to the version mismatch.

0 投票
1 回答
1982 浏览

angular - *.ngsummary.json 的目的是什么

我刚刚了解AOTngc。运行后ngc我看到很多*.ngsummary.json(在src文件夹中,在文件旁边*.ts)。

它们是干什么用的?

0 投票
1 回答
2034 浏览

angular - Angular - useFactory - 不支持错误函数调用。考虑将函数或 lambda 替换为对导出函数的引用

我使用 Angular AOT 编译器版本 4.1.3

我有一个组件库,它导出一个工厂方法,然后用于提供服务:

我成功地编译了ngc

然后导入编译好的库,我LibServiceFactory在网站的AppModule中使用:

编译网站ng build出现以下错误:

错误(position 5:10 in the original .ts file)指向工厂方法中的匿名函数:return (http: Http): LibService => {

作为附加信息,我创建和使用工厂方法的方式与官方文档中关于注入令牌的 Angular 建议相同。

我的错误是预期的行为吗?还是我的实现有问题?

0 投票
0 回答
53 浏览

angular - Angular2 编译器将模块“x”转换为“x/index”

我很难理解为什么@angular编译器会更改我的模块名称:

指令.ts

tsconfig.aot.json

然后我@angular/compiler使用clias运行ngc -p tsconfig.aot.json。我得到这个结果没有任何意义。

指令.js

有谁知道为什么会发生这种情况,或者如何解决这个问题。这使得无法Rollup解析这些模块。

角度编译器:v4.2.4

Angular 编译器-cli:v4.1.3

0 投票
1 回答
3703 浏览

angular - Angular 编译器选项

我正在寻找此处列出的一些Angular 编译器选项的解释:

  • useDebug - 打开调试
  • useJit - 不清楚(仅在一处使用)
  • defaultEncapsulation - 设置默认样式封装
  • 提供者- 不是很清楚(ngModule 装饰器是否相同?)
  • missingTranslation - 如果缺少翻译键该怎么办
  • enableLegacyTemplate - 支持template标签(已弃用)
0 投票
1 回答
638 浏览

angular - Angular 编译器 - 没有预期成员的符号

这似乎是目前相当普遍的问题。请看这里这里

这个枚举为我抛出了异常:

错误是:

有人可以澄清一下我的枚举声明是否在 Angular 中受支持?

有人可以为这个问题提供解决方案吗?

我的 package.json 包含:

我也试过这个 4.0.0 和 4.3.0,同样的问题。

0 投票
1 回答
486 浏览

angular - Angular 编译器输出包含未定义 this 的脚本

我正在为 Angular 开发一个小型 npm 包,它基本上是一个指令,可以在您放置的元素上进行拖动/移动。我昨天确实设法发布了它(甚至认为这需要一段时间,因为这是我第一次将 angular 包发布到 npm)。我用来ngc编译 Angular 的代码。用于捆绑的汇总和用于缩小的 unglify。

现在,我想修复我发现的几个错误。我修复了它们,运行了编译器,运行了汇总等。但是汇总一直向我显示@angular/core未定义的内容,因此它将其视为外部依赖项,并且 - 我无法解决的问题 -this is undefined在我的两个文件中(https: //github.com/rollup/rollup/wiki/Troubleshooting#this-is-undefined)。无论如何,模块已经构建,我能够发布并使用它。问题是,当我尝试ng build --prod --aot使用包含该软件包的应用程序时,它会大喊:

我猜这是因为我上面写的警告。所以我试图修复它们,但没有成功。我至少能够通过添加到文件中来修复@angular/core警告,但仍然存在。我还意识到我编译的文件与昨天的不同。exports: ['@angular/core']rollup.config.jsthis is undefined

在几次提交之前编译的文件等:

今天编译的文件:

看起来装饰器的创建方式不同,我真的不知道我是否更改了tsconfig.json文件或任何其他配置文件中的任何内容。

我正在执行构建模块的步骤是:

  1. node_modules/.bin/ngc -p tsconfig.json
  2. node_modules/.bin/rollup -c
  3. node_modules/.bin/uglify ... (that's a long one)

我的文件结构是:

...我正在将输出编译到dist/应用程序根目录中的目录中。

包.json

tsconfig.json

rollup.config.js

如果有人阅读了所有内容并知道可能导致问题的原因,我将不胜感激。谢谢你。

0 投票
3 回答
215 浏览

angular - 如何告诉 Angular 不要编译模板的某些部分?

实际案例非常简单:我想为我的库提供文档,因为我想将代码示例与演示部分一起粘贴到那里。

所以我的问题是:如何使一部分可编译和可执行,而另一部分 - 只是一个文本(!带双大括号)。

例如:

0 投票
1 回答
839 浏览

angular - Angular 编译器如何处理多个同名的模板引用变量

我想开始为 Angular 做贡献,我有一个功能的想法,如果模板包含两个同名的模板变量,我希望模板编译器发出警告。我想我设法接近了负责的源文件:https ://github.com/angular/angular/blob/master/packages/compiler/src/view_compiler/view_compiler.ts但找不到位置,这是可以理解的. 这里有人可以指导我吗?