我一直致力于创建一个包含多个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开发,所以如果其中一些看起来很朦胧,那可能是因为我很糟糕。但是我想减少吸吮!如果有人愿意帮助我,我会非常感谢你借用的专业知识。
答案 0 :(得分:0)
我最终发现并继续的答案是:
Angular Compiler-CLI< 1.5.0-rc.5(我认为它的发布候选版本5,我没有查看更改日志)不支持此行为。在这个项目的最初几个月开发代码,我只是在Angular 5中开发并获得我期望的结果。