【问题标题】:Angular CLI (AOT) gives error: ERROR in Cannot determine the module for classAngular CLI (AOT) 给出错误:无法确定类模块中的错误
【发布时间】:2017-04-24 20:57:17
【问题描述】:

我最近迁移了我的项目以使用 Angular CLI 来打包我的项目。使用“ng build”可以正常工作,但是当我尝试使用“ng build --prod”(又使用 Angular AOT 和其他附加步骤)时,我会收到以下错误:

ERROR in Cannot determine the module for class CustomDialog in F:/depot/depot/code/main/web/CedarsReport/src/a
pp/dialogs/customDialog.ts! Add CustomDialog to the NgModule to fix it.
Cannot determine the module for class ConfirmDialog in F:/depot/depot/code/main/web/CedarsReport/src/app/dialo
gs/confirmDialog.ts! Add ConfirmDialog to the NgModule to fix it.
Cannot determine the module for class EditUserDialog in F:/depot/depot/code/main/web/CedarsReport/src/app/dial
ogs/editUserDialog.ts! Add EditUserDialog to the NgModule to fix it.
Cannot determine the module for class LoginDialog in F:/depot/depot/code/main/web/CedarsReport/src/app/dialogs
/loginDialog.ts! Add LoginDialog to the NgModule to fix it.
Cannot determine the module for class EditAllControlsDlg in F:/depot/depot/code/main/web/CedarsReport/src/app/
dialogs/editAllControlsDlg.ts! Add EditAllControlsDlg to the NgModule to fix it.
Cannot determine the module for class EmptyTemplateDlg in F:/depot/depot/code/main/web/CedarsReport/src/app/di
alogs/emptyDialogTemplate.ts! Add EmptyTemplateDlg to the NgModule to fix it.
Cannot determine the module for class PopupSkeleton in F:/depot/depot/code/main/web/CedarsReport/src/app/direc
tives/popupSkeleton.ts! Add PopupSkeleton to the NgModule to fix it.

但是,这些文件中的大多数都在名为 CRDialogs.module.ts 的模块中引用:

import { NgModule }      from '@angular/core';
import { CommonModule } from '@angular/common'; // ngFor, ngIf, ngStyle, and so on

import { Ng2Bs3ModalModule, ModalComponent } from 'ng2-bs3-modal/ng2-bs3-modal';

    // Some dialogs use directives we've created
import { CRDirectives } from '../directives/CRDirectives.module';   

    // What we want to declare and export. Also, anything in 'imports' below is made available to all of these components
import { ChangePasswordDialog } from "./changePasswordDialog"
import { ConfirmDialog } from "./ConfirmDialog"
import { CreateShortcutDialog } from "./CreateShortcutDialog"
import { CustomDialog } from "./CustomDialog"
import { EditControlDlg } from "./EditControlDlg"
import { EditSectionDlg } from "./EditSectionDialog"
import { EditSitesDialog } from "./EditSitesDialog"
import { StandardFieldDialog } from "./editStandardFieldDialog"
import { EditUserDialog } from "./EditUserDialog"
import { ErrorsDialog } from "./ErrorsDialog"
import { GenericListDlg } from "./GenericListDialog"
import { LoginDialog } from "./LoginDialog"
import { ReferringPhysDialog } from "./ReferringPhysDialog"
import { SignReportDlg } from "./SignReportDlg"


@NgModule(
{
    imports: [CommonModule, CRDirectives, Ng2Bs3ModalModule],       // Other modules to import

    declarations: [  
        ChangePasswordDialog, ConfirmDialog, CreateShortcutDialog, CustomDialog, EditControlDlg, EditSectionDlg, EditSitesDialog, 
        EditUserDialog, StandardFieldDialog, ErrorsDialog, GenericListDlg, LoginDialog, ReferringPhysDialog, SignReportDlg
    ],

    exports: [ 
        ChangePasswordDialog, ConfirmDialog, CreateShortcutDialog, CustomDialog, EditControlDlg, EditSectionDlg, EditSitesDialog,
        EditUserDialog, StandardFieldDialog, ErrorsDialog, GenericListDlg, LoginDialog, ReferringPhysDialog, SignReportDlg
    ]
})

export class CRDialogs {}

而这个模块又在我的 app.module.ts 中被引用:

import { CRGlobals } from "./globals"

[...]

@NgModule({
    declarations: [
        CSReportMain,
        AppTestTemp
    ],
    imports: [
        BrowserModule,
        FormsModule,
        HttpModule,
        CRDirectives,
        **CRDialogs,**
        CRPages,

       [...]
    ],
    providers: [
        CRGlobals
    ],
    bootstrap: [CSReportMain]
})

这里是 main.ts:

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule);

那么为什么会出现这个错误?

【问题讨论】:

  • 你能发布你的 main.ts 吗?或在任何地方使用 platformBrowserDynamic().bootstrapModule(...);我假设它看起来像这样:platformBrowserDynamic().bootstrapModule(AppModule); ?
  • 当然可以。原帖已更新。 (见结尾。)

标签: angular-cli angular2-aot


【解决方案1】:

在 app.module.ts 中,您是否尝试进行实际导入,而不是仅仅将它们引用回 CRDialogs.module.ts 我还注意到在 main.ts 中您只导入了 app.module.ts,您可以先尝试在其中导入 CRDialogs.module.ts,然后再在 app.module.ts 中进行任何导入。

我是 Angular 的新手,我刚刚解决了一个类似的问题,我的问题是我没有在 app.model.ts 中正确导入我希望这会有所帮助

【讨论】:

  • 这实际上是什么意思? "尝试进行实际的导入,而不是仅仅将它们引用回 CRDialogs.module.ts"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 2017-11-23
  • 2018-03-17
相关资源
最近更新 更多