Angular AoT生成不正确的外部目录引用

时间:2017-10-25 02:29:30

标签: angular angular2-aot angular-aot

我一直致力于创建一个包含多个Angular和NodeJS项目的项目(所有Typescript)。那部分进展顺利,但我认为如果我的源文件夹下有一个库文件夹,我的所有Typescript项目都可以与,Typescript接口,NgModules等共享项目模块,那将是非常好的。但是,当我编译时生产源,对于我的'lib'NgModules,ModuleFactory对实际模型的引用无法正确转换。

我创建了一个演示并将其上传到我的GitHub作为示例: https://github.com/ItsBaneDude/broken-external-links

我已将编译脚本包含在

下的npm脚本中
npm run build-aot  // Builds and fails for production
npm run build-jit  // Builds and runs for dev i.e. "ng serve --dev"
npm run compile-aot // To compile and keep AoT folder in src, just ngc

我忘了放置JiT服务脚本,以便您可以自动看到它在浏览器中运行它,但我的意思是您可以ng serve --dev来实现它。

那么,会发生什么:你尝试为生产构建,npm run build-aot,它说

ERROR in C:/Users/Bane/Documents/node_projects/broken-external-libs/src/project-ng/aot/lib/modules/test/test.module.ngfactory.ts (10,21): Cannot find module './test.module'.

无赖。我想知道为什么。

使用 npm run compile-aot 运行AoT编译......它“有效”......

好的,所以AoT foder在src/project-ng/aot生成。如果我进入.../aot/app/app.module.ngfactory.ts,我会在第10行看到我的应用模块的导入语句。

import * as i1 from '../../app/app.module';

好的,很酷,它会一直正确地跟回../../app/app.module并成功解析。

但是,如果我再次进入AoT文件夹(我的lib文件夹除外)...aot/lib/modules/test/test.module.ngfactory.ts,我会在第10行看到它,再次尝试导入我的TestModule,但来自./test.module

import * as i1 from './test.module';

但是,正如我们所知道的那样理性,自我和计算机意识的人类,它应该更像../../../../../lib/modules/test/test.module

y tho

为了完全公平,我最近才刚刚开始Angular开发,所以如果其中一些看起来很朦胧,那可能是因为我很糟糕。但是我想减少吸吮!如果有人愿意帮助我,我会非常感谢你借用的专业知识。

1 个答案:

答案 0 :(得分:0)

我最终发现并继续的答案是:

Angular Compiler-CLI< 1.5.0-rc.5(我认为它的发布候选版本5,我没有查看更改日志)不支持此行为。在这个项目的最初几个月开发代码,我只是在Angular 5中开发并获得我期望的结果。