我正在尝试迁移到 esbuild 来构建我的 Angular 应用程序。我已经完成了我需要做的所有事情,但我不断看到控制台中记录了此错误:
Error: NG0203: inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with
runInInjectionContext
我已经尝试了“使用应用程序生成器”中描述的所有内容:https://angular.io/guide/esbuild
我的 app.config.ts 看起来像这样:
export const appConfig: ApplicationConfig = {
providers: [
importProvidersFrom(
BrowserModule,
SharedModule,
DataSetModule,
LookUpTablesModule,
NormsModule,
StoreModule.forRoot({
mappings: mappingsReducer,
auth: authReducer,
}),
EffectsModule.forRoot([AuthEffects])
),
provideAnimations(),
provideHttpClient(),
provideRouter(routes),
],
};
我注入了这样的类,它与前构建器一起工作:
constructor(
private router: Router,
public excelDownload: ExcelDownloadService,
private route: ActivatedRoute,
private dataSetService: DataSetService
) {} ```
Edit: this is the exact error that is being logged:
`ERROR Error: NG0203: inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with `runInInjectionContext`. Find more at https://angular.io/errors/NG0203
at injectInjectorOnly (core.mjs:985:15)
at ɵɵinject3 (core.mjs:998:42)
at Object.factory (core.mjs:27529:46)
at core.mjs:6247:43
at runInInjectorProfilerContext (core.mjs:948:9)
at R3Injector.hydrate (core.mjs:6246:17)
at R3Injector.get (core.mjs:6114:33)
at definition.getStandaloneInjector (core.mjs:27545:31)
at ComponentFactory.create (core.mjs:15477:57)
at _ApplicationRef.bootstrap (core.mjs:31863:42)`
请一一删除这些模块以找出有问题的模块。如果根组件是独立的,则剩余的导入可以移动到根组件的导入中,如果不是,您可以添加到应用程序模块的导入数组中!
不要使用
BrowserModule
,而是使用 CommonModule
,这可能会给您带来一些错误!
@Component({
imports: [
CommonModule,
SharedModule,
DataSetModule,
LookUpTablesModule,
NormsModule,
]
})
export class App {
}
在我看来,可能只需要这两个就可以了
importProvidersFrom
export const appConfig: ApplicationConfig = {
providers: [
importProvidersFrom(
StoreModule.forRoot({
mappings: mappingsReducer,
auth: authReducer,
}),
EffectsModule.forRoot([AuthEffects])
),
provideAnimations(),
provideHttpClient(),
provideRouter(routes),
],
};