Adam Cox
Adam Cox

Reputation: 3681

Error: NG0203: inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used

The setup:

  1. MongoDB (Atlas or local)
  2. Backend: NestJS, OAS, using swagger-codegen to package 'backend client' for...
  3. Angular 15 + Material Design + Ngrx (store + effects)

Recently I added the state manage work using Ngrx and when I add the EffectsModule I get this 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 EnvironmentInjector#runInContext.

Issue began when adding EffectsModule to import (line 36) of app.module.ts

I continue my research of this, and would appreciate any thoughts or insights. Based on this SO article (1) the error appears generic. I am open to ideas of how to chase this down.

Repo branches necessary to replicate environment:

  1. Angular client
  2. Backend API

Other SO articles I have come across:

  1. Angular upgrade - Error: inject() must be called from an injection context at injectInjectorOnly
  2. inject() must be called from an injection context when using angular library in ionic project

Causes error to change to: NullInjectorError: NullInjectorError: No provider for Store!

  1. Services generated by openapi-generator-cli not injectable

LATEST:

I suspected that the typescript being generated by the openapitools/openapi-generator-cli is no longer sufficient whilst including the ngrx work. I did find the typescript-angular generator in the list of generator and will give this a try...

Upvotes: 1

Views: 8867

Answers (3)

Youness zagouri
Youness zagouri

Reputation: 29

// Import your router with inject function :
const router = inject(Router) ;

Upvotes: -1

ad450
ad450

Reputation: 103

I had the same error in the Chrome console logs. I had an angular library I created and imported it into an existing angular app. I was using npm install C:/...dist/myapp to install the library.

My app was missing in the angular.json: projects/myapp/architect/build/options/preserveSymlinks: true

After changing preserveSymlinks to true, reinstalling, I no longer had the mentioned error.

Upvotes: 3

Adam Cox
Adam Cox

Reputation: 3681

The issue was likely a few things. Specifically, setting up the module correctly. This article was useful in pointing out that I had not setup and referenced the API package correctly.

Specifically the part under heading "Usage example" where code shows like:

import { PostsService } from './core/api/v1';

Therefore, I change the path to my output arg when running the openapi-generator. Instead of using npm link I referenced the output directly.

Upvotes: 2

Related Questions