You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建Angular应用时出现‘No NgModule metadata found for 'class{}'’错误

解决Angular生产构建中"No NgModule metadata found for 'class{}'"错误

我帮你分析了代码里的问题,核心原因和修复步骤如下:

核心错误原因

在main.ts的environment.library分支中,你尝试引导MainModule,但没有在文件顶部导入MainModule,导致MainModule变量未定义。Angular尝试引导一个空对象,因此抛出了No NgModule metadata found for 'class{}'的错误。

具体修复步骤

1. 修复main.ts的导入问题

在main.ts顶部添加MainModule的导入语句,确保变量能被正确识别:

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { MainModule } from './app/main.module'; // 新增这行导入
import { LibrModule } from './app/libr.module';
import 'zone.js';
import { environment } from './environments/environment';

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

if(environment.library) {
 platformBrowserDynamic().bootstrapModule(MainModule)
 .catch(err => console.error(err));
} else {
 platformBrowserDynamic().bootstrapModule(AppModule)
 .catch(err => console.error(err));
}

2. 调整MainModule的bootstrap配置(可选,根据library模式需求)

如果library模式需要单独运行应用,需要把AppComponent加入MainModule的bootstrap数组,让Angular知道要启动哪个根组件:

@NgModule({
 declarations: [
 AppComponent,
 DashboardComponent,
 ...
 LinkAccountComponent,
 DiscoverAccountComponent
 ],
 imports: [
 BrowserModule,
 BrowserAnimationsModule,
 HttpClientModule,
 AppRoutingModule,
 SharedModule,
 ],
 providers: [],
 bootstrap: [AppComponent], // 新增根组件配置
 exports: [
 // 只导出需要在外部模块使用的组件,不需要导出导入的模块(如AppRoutingModule、SharedModule)
 AppComponent,
 DashboardComponent,
 ...
 ]
})
export class MainModule {}

3. 清理MainModule的exports数组

移除exports中的AppRoutingModule和SharedModule,因为这些是你已经导入的模块,不需要再次导出(除非你明确要让导入MainModule的模块直接使用它们的导出内容)。

验证修复

完成上述调整后,重新执行ng build --prod命令,应该就能正常完成生产构建了。

内容的提问来源于stack exchange,提问作者Sai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:11:58