英文:
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:
- MongoDB (Atlas or local)
- Backend: NestJS, OAS, using swagger-codegen to package 'backend client' for...
- 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:
Other SO articles I have come across:
- Angular upgrade - Error: inject() must be called from an injection context at injectInjectorOnly
- 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!
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...
英文:
The setup:
- MongoDB (Atlas or local)
- Backend: NestJS, OAS, using swagger-codegen to package 'backend client' for...
- 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:
Other SO articles I have come across:
-
Angular upgrade - Error: inject() must be called from an injection context at injectInjectorOnly
-
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!
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...
答案1
得分: 2
问题可能有几个地方。具体来说,正确设置模块是其中之一。这篇文章在指出我没有正确设置和引用API包时很有帮助。
具体来说,在“Usage example”部分,代码如下:
import { PostsService } from './core/api/v1';
因此,我在运行openapi-generator时更改了输出参数的路径。我直接引用输出,而不是使用npm link
。
英文:
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.
答案2
得分: 0
我在Chrome控制台日志中遇到了相同的错误。我有一个我创建的Angular库,并将其导入到现有的Angular应用程序中。我使用npm install C:/...dist/myapp
来安装该库。
我的应用程序在angular.json中缺失:
projects/myapp/architect/build/options/preserveSymlinks: true
将preserveSymlinks更改为true后重新安装,我不再遇到上述错误。
英文:
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.
答案3
得分: 0
// 使用inject函数导入你的路由器:
const router = inject(Router);
英文:
// Import your router with inject function :
const router = inject(Router) ;
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论