3

尝试使用 ng build -prod 构建时出现以下错误

ERROR in Cannot determine the module for class ManagersService in C:/Test/src/app/shared/common/managers/managers.service.ts! Add ManagersService to the NgModule to fix it.

我有 AppModule、AppCommonModule 和 CustomModuleA。ManagersService 在 AppCommonModule 中。CustomModuleA 有一个使用 AppCommonModule 的 ManagersComponent(该组件使用 ManagersService)的路由。AppCommonModule 在 AppModule 和 CustomModuleA 中都被导入

我已将该服务添加到 AppCommonModule 提供程序。我不明白我在这里缺少什么。

注意:使用 ng serve 这就像一个魅力。没有错误。

这是属于 AppCommonModule 的 ManagersComponent

@Component({
    templateUrl: './managers.component.html',
    providers: [ManagersService]
})
export class ManagersComponent extends AppComponentBase {
    @ViewChild('createOrEditManagerModal') createOrEditManagerModal: CreateOrEditManagerModalComponent;

    constructor(public managersService: ManagersService) {
    }

这是 AppCommonModule

@NgModule({
    imports: [
        FormsModule,
        ReactiveFormsModule        
    ],
    declarations: [
        ManagersComponent        
    ],
    providers: [
        ManagersService,
    ],
    exports: [      
        ManagersComponent,
    ]
})

这是 CustomModuleA

@NgModule({   
    imports: [
        CommonModule,
        FormsModule,
        HttpModule,
        ModalModule,
        TabsModule,
        TooltipModule,
        AppCommonModule,        
    ],
     declarations: [
        CompA     
    ],
    providers: [
       SomeOtherService
    ]
})

export class CustomModuleA { }

这是 CustomAModuleRouting

NgModule({
    imports: [
        RouterModule.forChild([
            {
                path: '',
                children: [                    
                    {
                        path: 'compA',
                        component: CompA,                       
                    },                    
                    {
                        path: 'managers',
                        component: ManagersComponent,                        
                    },
                ]
            }
        ])
    ],
    exports: [
        RouterModule
    ]
})
4

1 回答 1

5

我在 AppCommonModule 中看不到您的导入,但我猜您有两个包含 ManagersService 的文件,并且只导入其中一个(不是 src/app/shared/common/managers/managers.service.ts)。删除有问题的欺骗文件将解决您的问题。

--prod 开关触发 AOT 编译,它将尝试编译它找到的每个 .ts 文件。ng serve 使用 JIT 编译,这就是为什么问题不会在那里表现出来的原因。

于 2017-05-23T11:58:16.857 回答