问题标签 [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.
angular - 如何处理 angular2 延迟加载路由失败
我正在使用 Angular 2 惰性路由。客户端与 webpack2 捆绑使用 AOT 和 angular-router-loader 以延迟加载子级。当浏览器连接时,一切都按预期工作,即我可以成功地将路由器导航到延迟加载的模块,成功加载块并且我可以查看组件等。
但是,如果我模拟断开连接(例如,通过使用离线 chrome 开发人员工具选项),路由会按预期失败,因为它无法加载相关块。错误是“加载块 [块号] 失败”
之后没有路由命令起作用,就像路由器坏了一样。
我尝试使用全局 ErrorHandler 处理错误。这个想法是,也许我可以在它破坏路由器之前捕捉到错误,但到那时似乎为时已晚。在我发现错误时,路由器无法正常工作。
自定义错误处理程序有效,因为打印了“离线模式”消息。注入也有效,路由器不为空,但是路由器导航不起作用,路由器承诺没有解决也没有被拒绝。
我想要完成的是处理错误(例如向用户显示信息性消息),同时让路由器处于工作状态,以便用户稍后可以导航(当互联网连接恢复时)无需重新加载整个页面。
更新 1:尝试在没有 aot 和 webpack 的情况下进行复制
为了查看这是否是角度路由器问题,我尝试查看尝试使用 jit 编译脱机工作时会发生什么。我使用 : angular router plunker导航到登录选项卡,切换到离线并按下登录。当客户端尝试加载管理模块时,记录了许多“错误:XHR 错误加载”错误。最终导航失败,但此后路由导航并没有中断。我能够导航到其他选项卡,并且在切换回在线后,我什至能够导航到管理员。也许问题在于 angular-router-loader webpack 插件如何尝试加载模块。
更新 2:似乎是一个已知问题
angular - 将自定义 TS 定义传递给 Angular 2 AOT 编译器
我正在使用ngc
编译器提前编译我的 Angular 2 应用程序。在我的应用程序的一部分中,我使用了默认情况下 TypeScript 未涵盖的 Notification API。当我运行时ngc
,它抱怨:
我有一个用于 window.Notification 对象及其方法的自定义 TS 定义文件,但是我如何告诉 ngc 编译器该文件位于何处?
我的 tsconfig.json 文件:
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的链接
我希望有人能帮帮忙!
angular - 延迟加载 + 在 angular2 项目上应用 AOT 与 systemjs builder 捆绑项目
我在哪里可以找到关于在 Angular2 SystemJs 项目(带有延迟加载模块)上应用 aot 和捆绑的示例 Angular 2 项目?
我通过 angular-cli 做到这一点。但我怎么能用systemjs做到这一点?
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”不匹配任何元素
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
:
请让我知道我是否可以提供更多信息或更清楚。谢谢!
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 当前包含的内容:
}
如果您需要任何其他信息,请告诉我。我还没有找到任何关于这个的东西,我已经找了两天了。
aot - AOT:抛出“找不到模块'../aot/app/app.module.ngfactory'”
我正在尝试将 AOT 集成到我的项目 Angular 项目中。它在运行项目时引发错误。
我使用了 systemjs.config 文件如下
我不知道为什么会出现这种类型的错误,请提出解决方案。
angularjs - ng1 $rootScope 依赖注入到 ng2 在 aot (ng1 -> ng2 混合) 中出现问题
我已经创建了 $rootScope 的以下 RootScopeService 包装器,如下所示,之后我在名为 xService 的 angular2 服务下使用了它。
我用 AOT 编译过,编译成功。然后使用汇总创建构建文件。运行 build.js 文件时出现以下问题
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 文件。