报错:NgModule仅指代类型却被用作值,求排查StarterModule问题
解决Angular中“NgModule仅指代一个类型,但此处被用作值”报错
我一眼就发现问题出在哪了——你导入NgModule的路径完全错误!
你当前是从@angular/compiler/src/core导入NgModule,但这个路径下的NgModule只是一个TypeScript类型定义(interface/type),并不是能用来装饰模块的可执行装饰器值。Angular框架提供的NgModule装饰器,正确的导入来源应该是@angular/core。
修复步骤
只需要把第一行的导入语句修改为:
import { NgModule } from '@angular/core';
为什么另一个模块能正常编译?
大概率是那个正常的模块里,NgModule的导入路径是正确的,你可以对比两个模块的导入部分就能验证这一点。
额外排查小技巧
- 遇到这类“类型被用作值”的报错,优先检查对应的导入路径是否正确,很多时候都是误导入了类型定义文件而非实际可执行代码
- Angular的核心装饰器(比如
NgModule、Component、Directive)几乎都来自@angular/core,绝对不要从内部子路径(像compiler/src这类)导入,这些内部路径属于框架私有实现,不仅会导致报错,还可能在版本更新时出现兼容性问题
修改后的完整代码
import { NgModule } from '@angular/core'; // 修正后的导入路径 import { AdminHeaderComponent } from '../admin/admin-header/admin-header.component'; import { AdminLeftSideComponent } from '../admin/admin-left-side/admin-left-side.component'; import { AdminContentComponent } from '../admin/admin-content/admin-content.component'; import { AdminFooterComponent } from '../admin/admin-footer/admin-footer.component'; import { AdminControlSidebarComponent } from '../admin/admin-control-sidebar/admin-control-sidebar.component'; import { AdminDashboard1Component } from '../admin/admin-dashboard1/admin-dashboard1.component'; import { AdminDashboard2Component } from '../admin/admin-dashboard2/admin-dashboard2.component'; import { CommonModule } from '@angular/common'; import { AdminComponent } from "../admin/admin.component"; import { StarterRoutingModule } from "./starter-routing/starter-routing.module"; import { StarterComponent } from "./starter.component"; @NgModule({ imports: [ CommonModule, StarterRoutingModule ], declarations: [ AdminComponent, AdminHeaderComponent, AdminLeftSideComponent, AdminContentComponent, AdminFooterComponent, AdminControlSidebarComponent, AdminDashboard1Component, AdminDashboard2Component ], exports: [StarterComponent] }) export class StarterModule { }
内容的提问来源于stack exchange,提问作者DarioN1
相关产品推荐
相关产品推荐

