我一直致力于创建一个包含多个 Angular 和 NodeJS 项目的项目(所有 Typescript)。那部分进展顺利,但我认为如果我的源文件夹下有一个库文件夹,我的所有 Typescript 项目都可以共享项目模块,Typescript 接口,NgModules 等,那就太好了。但是,当我编译作为生产源,ModuleFactory 对实际模型的引用无法正确转换为我的“lib”NgModules。
我创建了一个演示并将其上传到我的 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'.
真可惜。我想知道为什么。
运行 AoT 编译 npm run compile-aot
...它“工作”...
好的,所以 AoT 素材在src/project-ng/aot
. 如果我进入.../aot/app/app.module.ngfactory.ts
,我会在第 10 行看到我的应用程序模块的导入语句。
import * as i1 from '../../app/app.module';
好的,很酷,它一直正确地返回../../app/app.module
并成功解决。
但是,如果我再次进入 AoT 文件夹,除了在我的lib
文件夹中,to ...aot/lib/modules/test/test.module.ngfactory.ts
,我在第 10 行再次看到它,尝试导入我的 TestModule,但从./test.module
import * as i1 from './test.module';
但是,正如我们所知的理性的、具有自我意识和计算机意识的人类,它应该更像../../../../../lib/modules/test/test.module
.
是的
公平地说,我最近才开始 Angular 开发,所以如果其中一些对我来说似乎很模糊,那可能是因为我很烂。但我希望吸得更少!如果有人愿意帮助我,我将非常感谢您借用的专业知识。