Angular AOT编译器生成错误的导入

Angular AOT编译器生成错误的导入,angular,angular-cli,angular2-aot,Angular,Angular Cli,Angular2 Aot,我有一个多应用angular cli项目,其中包含一些代码库共享 基本上,结构如下所示: import * as i0 from './demo.component.css.shim.ngstyle'; import * as i1 from '@angular/core'; import * as i2 from './demo.component'; src-主要应用 应用程序组件-引导组件 应用程序模块 共享-共享应用程序部件 演示组件 共享。模块 扩展-第二个应用程序应该扩展

我有一个多应用angular cli项目,其中包含一些代码库共享

基本上,结构如下所示:

import * as i0 from './demo.component.css.shim.ngstyle';
import * as i1 from '@angular/core';
import * as i2 from './demo.component';
  • src-主要应用
    • 应用程序组件-引导组件
    • 应用程序模块
    • 共享-共享应用程序部件
      • 演示组件
      • 共享。模块
  • 扩展-第二个应用程序应该扩展主应用程序
    • 扩展应用程序组件-引导组件
    • 扩展模块
SharedModule
(声明并导出
DemoComponent
)由
AppModule
ExtensionModule
导入
DemoComponent
然后添加到
AppComponent
ExtensionAppComponent
的模板中

使用JIT编译器时,一切正常(
ng-serve
ng-serve--app-extension
),但AOT编译器没有说:

无法解析“../../src/app/demo/demo.component.ngfactory”

查看
GENDIR/app/demo/demo.component.ngfactory中生成的文件,我们得到以下信息:

import * as i0 from './demo.component.css.shim.ngstyle';
import * as i1 from '@angular/core';
import * as i2 from './demo.component';
最后一次导入失败,因为
GENDIR/app/demo
文件夹中没有“demo.component”。令人惊讶的是,作为
i0
导入的文件确实存在,并且包含适当的样式


更新:问题似乎出在
ngc
中。即使在
tsconfig.json
中添加一个
path
别名,它也不起作用。在github()上有几个关于它的问题。

我今天遇到了一个类似的问题,我可以通过将我的
tsconfig.app.json
文件移动到我想要使用的所有代码的祖先目录中来解决它。然后,我修改了我的
tsconfig.app.json
中的
include
数组,使其仅包含辅助应用程序

注意:我使用一个
.angular cli.json
配置来构建多个应用程序。如果您有多种配置,您的里程可能会有所不同

对于您的示例,您可以尝试以下结构:

    • src(主要应用)
      • 应用程序组件-引导组件
      • 应用程序模块
      • 共享-共享应用程序部件
        • 演示组件
        • 共享。模块
    • 扩展-第二个应用程序应该扩展主应用程序
      • 扩展应用程序组件-引导组件
      • 扩展模块
    • tsconfig.extension.json-扩展应用程序的特定于应用程序的tsconfig文件
tsconfig.extension.json文件中,添加一个include部分:

...
"include": [
    "./extension/**/*"
]
...
假设您在
.angular cli.json
文件中声明了每个应用程序,您还需要更新扩展应用程序的
“tsconfig”
属性:

"name": "extension",
// Other configuration...
"tsconfig": <insert path to tsconfig based on "root" here>
“名称”:“扩展名”,
//其他配置。。。
“tsconfig”:
读者当心 这种结构是一种黑客行为,没有官方支持。如果将来的更新会导致它自身崩溃,请不要感到惊讶

致力于:

  • 节点:v8.4.0
  • 净现值:5.4.2
  • @角度/cli:1.4.2