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

angular - Angular 5 webpack 3 aot

我正在尝试使用 webpack 3 和 angular 5 进行 aot 构建,但是网上有很多教程,没有一个没有问题的完整示例,到目前为止,我有以下配置:(对于那些有疑问的人路径 - 我在 java 应用程序中使用它)

webpack.config.aot.js:

tsconfig.aot.json:

main.aot.ts:

文件结构(简化):

(如果我没有展示相关内容,请告诉我)

所以当我试图使用它来构建它时webpack -p --config ./webpack.config.aot.js

我收到以下错误:

这听起来很合法,因为那里没有 AppModuleNgFactory,但正如我在教程中看到的那样,它应该是在 aot 构建时使用 genDir 生成的,对吗?(请不要说,如果我省略 app/ 文件夹,所以路径看起来是 '../factory/app.module.ngfactory' 我得到同样的错误)

使用@ngtools/webpack 指向 aot 构建中不存在的 AppModuleNgFactory 是否正确?

那个 AppModuleNgFactory 是什么?在 Angular 网站上几乎没有关于它的任何文档

我应该在我的配置中更改什么才能成功生成 aot build?

如果我将主文件更改为引导 AppModule 本身,它会成功构建,但在浏览器中NullInjectorError: No provider for t!出现错误

没有缩小它显示:No provider for CompilerFactory!

0 投票
0 回答
3061 浏览

angular - svg 不会在生产模式下加载

我所有的 svg 在开发模式下都能完美运行,只要我运行“ng build --prod --aot”,它们就不会加载。它们都回退到 png 图像。我不知道如何修复它。我有已经在github上,并尝试过

  • 绝对路径
  • 相对路径
  • 绑定与插值

我在用着angular 4.4.3

angular/cli 1.5.4

html:

另一个例子:

*由于第 3 方包支持,我目前无法升级到 Angular 5

解决方案

感谢 Mathew 的回答,将文件路径添加到 cli assets 文件夹:

0 投票
2 回答
452 浏览

angular - Angular 5. 构建 AOT

在 Angular 5 中,我有一个错误使用:ng serve --aot

如果我使用 JIT(at-loader)构建,那么一切正常,但我需要 AOT。

在这里你可以看到讨论:https ://github.com/angular/angular/issues/20639

请帮帮我。

在此处输入图像描述

0 投票
0 回答
421 浏览

angular - Angular 5 构建问题 - ng serve --aot

在 Angular 5.1.0-beta.2 我有一个错误使用: ng serve --aot

在我调用编译器的另一个文件中

我的错误在下图中 在此处输入图像描述

我的设置

请帮帮我。

0 投票
1 回答
897 浏览

webpack - Angular 5 webpack 3 aot 构建

我们最近从 angular 4 升级到了 angular 5。我们还升级到了 webpack 3。通过摆脱 main.aot.ts 并直接指向 main.ts 来管理我们的 aot 构建工作,但我们无法加载构建. 我们看到“未定义 AppService”错误。有人可以帮忙吗?

main.ts

webpack.config.js

错误

0 投票
0 回答
181 浏览

angular - 如何创建与 AOT 兼容的“动态”模块?(静态解析符号值时遇到错误。不支持函数调用。)

我正在构建一个包含许多路由的应用程序,每个路由都定义为一个 NgModule。每个模块都非常相似,因此我想将其抽象为一个可重用的函数,该函数采用一组组件,并构建一个顶层@Component@NgModule.

所以这是其中一个模块:

这是makeModule()我正在尝试构建的功能:

因此,使用 JIT 编译器可以正常工作,但是一旦我运行ng serve --aot,它就会失败:

错误中的错误:静态解析符号值时遇到错误。不支持函数调用。考虑将函数或 lambda 替换为对导出函数的引用(原始 .ts 文件中的位置 18:27),解析 C:/Users/IGEN261/code/github/ng-dynamic/src/app/module 中的符号 makeModule -factory.ts,解析 C:/Users/IGEN261/code/github/ng-dynamic/src/app/foo.module.ts 中的符号 FooModule,解析 C:/Users/IGEN261/code/github/ng 中的符号 FooModule -dynamic/src/app/foo.module.ts,解析 C:/Users/IGEN261/code/github/ng-dynamic/src/app/app.module.ts 中的符号 AppModule,解析 C:/Users 中的符号 AppModule /IGEN261/code/github/ng-dynamic/src/app/app.module.ts

我觉得必须有一种方法可以使这与 AOT 保持一致,但我不确定如何。我应该以不同的方式构建我的代码吗?还是我必须放弃此代码库中的任何 DRY 前景以使其与 AOT 兼容?

仅供参考- 完整的项目可在 GitHub 上找到:https ://github.com/mattdsteele/ng-dynamic-aot

0 投票
1 回答
1349 浏览

angular - 如何在外部配置文件中定义一个变量并在 app.module 中使用它

在带有 Angular 5 的 Ionic 3 中,我试图在一个app.config.ts文件中定义我所有的外部 API 密钥。

我必须声明一个类,否则我会收到 ngc 引发的 AOT 错误。

这是我的 app.config.ts

我可以将它注入到其他类的构造函数中,但 firebase 必须在app.module.ts. 所以我尝试执行以下操作//配置

不幸的是,我收到以下错误 Property 'FIREBASE_CONFIG' does not exist on type 'typeof AppConfig'.

如何FIREBASE_CONFIG在这个app.config文件中声明并直接使用它app.module

我试图像这样在构造函数之前直接初始化变量,但结果相同

任何想法?

0 投票
1 回答
2062 浏览

angular - Angular 5:未处理的承诺拒绝:无法加载 html 文件

我对 Angular 5 有疑问。我正在尝试使用aotng serve ==> ("start": "ng serve --ssl --aot"package.json文件中)在生产模式下运行我的应用程序。但是,在这种情况下,应用程序找不到 html 文件。它aot虽然没有。我尝试了几种解决方案(在此处此处提到),例如更改这些文件中的字段中的文件路径(例如,绝对路径)templateUrl或更改应用程序路由或添加moduleId: module.id,但它们不起作用。请参阅以下错误:

在此处输入图像描述

任何的想法?

0 投票
1 回答
1082 浏览

angular - Angular 5 - 动态模块配置

我想在我的项目中导入一个从文件加载的特定配置的模块,该配置文件可以在运行时修改,并且在刷新浏览器时应用程序应该加载新的更改。

我现在正在做的是在“forRoot”方法中将配置文件路径发送到模块,并为配置提供指向“load”方法的“useFactory”,这个“load”方法只是使用HTTP GET检索我的配置文件。在我执行“ng build --prod --build-optimizer”之前,“ng build”似乎一切正常,这导致“遇到静态解析符号值时出错”。

我想它的原因是因为我在静态“forRoot”方法中使用了一个带有“useFactory”的提供程序,并且“useFactory”指向一个非静态方法。怎么可能处理这个?这是一个好方法吗?

这就是我的“forRoot”方法和“initConfig”方法的样子:

0 投票
0 回答
119 浏览

angular - Angular AOT 编译文件

我正在学习如何 angular (4+) 编译项目 AOT 以创建一个库,并且我对生成的文件有一些疑问。我编写了一个脚本来创建 esm 和 umd 包(.js 和 .map.js)、每个文件 (ngc) 和 package.json 的元数据和类型(我在其中定义了包的入口点)

然而,即使当我将我的包集成到主项目中时 JIT 编译工作正常,我也遇到了 AOT 的问题。为了解决它,我不得不将 ngc 生成的每个 .js 文件复制到 dist 文件夹中。因此,为了恢复,我为我的库提供这些文件:

  • 包.json
  • esm 包(.js 和 .map.js)
  • umd 包(.js 和 .map.js)
  • ngc 生成的文件(每个 .ts 文件的 .d.ts、.metadata.json 和 .js)

有人可以确认我们需要 .js 文件吗?是否可以在 AOT 编译期间使用 umd bundle 代替?