Angular: 错误错误:未捕获(承诺):错误:StaticInjectorError[e]:

创建于 2017-11-10  ·  94评论  ·  资料来源: angular/angular

https://image.prntscr.com/image/4Huq_HhQTHyIjYKH0ztgKw.png

ERROR Error: Uncaught (in promise): Error: StaticInjectorError[e]: StaticInjectorError[e]: NullInjectorError: No provider for e!

最有用的评论

导入 HttpModule 和 HttpClientModule 可以解决此问题。

import { HttpClientModule } from '@angular/common/http'; import { HttpModule } from '@angular/http';

所有94条评论

导入 HttpModule 和 HttpClientModule 可以解决此问题。

import { HttpClientModule } from '@angular/common/http'; import { HttpModule } from '@angular/http';

@ocombe正在修复(更好的错误信息)

添加 import { HttpModule } from '@angular/http'; 在 app.module.ts

仍然不适合我

也不适合我,同样的错误

同样在这里

不适合我

在应用模块中
第 1 步添加导入
从'@angular/http'导入{HttpModule};
第 2 步添加 HttModule:
进口:[
Http模块
],
.....

也许你需要在服务中添加
也从“@angular/http”导入 { Http ,HttpModule}

有同样的问题:(

同样的问题(我导入了 httpmodule,但仍然无法正常工作)

同样的错误,对我也不起作用

通过导入HttpClientModule即使我没有在整个应用程序中使用这个模块......那是有线的。

必须在 provider 部分下添加 app.module.ts 以使它们在提供者中可用

问题已解决!! 呼呼

@jersonjohn - 在 Providers 部分注册哪个服务。 我面临着同样的问题,在阅读了上述建议后,我已经在我的 app.module.ts 中导入了 HttpClient 和 HttpClientModule (即使我没有使用它们)...

请指教。

谢谢
迪帕克

capture

提供者:[
AuthGuard,
饼干服务,
公司服务,
政策服务,
通讯服务,
认证服务
]

@ilivestrong所有服务都需要在 app.module.ts 的 providers 部分进行配置

像这样的东西

提供者:[
AuthGuard,
饼干服务,
公司服务,
政策服务,
通讯服务,
认证服务
]

@jersonjohn - 我已经在提供者数组中拥有我所有的自定义服务和角度服务。 不知道为什么它不起作用。 我只是想使用反应式表单(使用 FormBuilder)构建登录页面。

不知道是什么破坏了它......

@ilivestrong您是否在 app.module.ts 的导入数组中包含了ReactiveFromsModule

@mumairofficial - 是的,我做到了。 奇怪的是,我创建了一个新项目,然后它就消失了,直到我编写了一个新的路由防护并且现在我的路由防护收到了这个 StaticInjectionError。

也提供了这个路线守卫。 :(

使用 ng-cli 创建新服务后,我遇到了同样的问题。 这应该会自动将服务添加到 app.module.ts 中的 providers 数组

我有同样的问题,但在“app.module.ts”中导入“ HttpModule ”后,它对我来说很好用。

  1. 从'@angular/http'导入{HttpModule};
  2. 在导入数组列表中添加“HttpModule”。

谢谢。
继续分享。

添加 import { HttpModule } from '@angular/http'; 在 app.module.ts 中为 Http
或者
添加 import {HttpClientModule} from '@angular/common/http' in app.module.ts for httpclient

我导入了 HttpModule 和 HttpClientModule 但仍然出现相同的错误,请任何人帮助我,我正在尝试实现路由。

@amitkprajapatiapp.module.ts导入 HttpClientModule

import { HttpClientModule } from '@angular/common/http'
///
@NgModule({
  imports: [ HttpClientModule ]
})

default

我有同样的问题。
在我的应用程序这个问题中,我是这样做的。
第1步。 查看。 app.Module.ts 文件内部导入[]

第2步。 检查您创建的模块,看看是否有任何新创建的文件未导入。

  • 就我而言,我尝试使用“ Effect ”注册而不从管理服务模块的“核心模块”导入“ FreezerService ”。

FreezerServiceapp.module.ts 的providers数组中

停止 ionic 并重新运行“ ionic serve ”以向您显示真实的错误消息。

@ilivestrong我也一样。
在我的userListComponent 中添加providers: [UserService]修复了它。

@Component({
  selector: 'app-user-list',
  templateUrl: './user-list.component.html',
  styleUrls: ['./user-list.component.css'],
  providers: [UserService]
})

这个组件是由我的user-module导入的,它本身是在app-module 中导入的。

希望能帮助到你 !

不使用任何解决方案。

档案 -----
error
system
appmodulets
homets
packagejson

@kverma17Camera添加到 app.module.ts 侧的 provider 数组中,并且不要忘记 _import_ 它 :)

我不确定相机能否在浏览器中正常工作,但您发布的错误会消失。

抱歉,我现在不在旅行中访问计算机

2018 年 1 月 19 日星期五下午 4:13,Muhammad Umair通知@ github.com
写道:

@kverma17 https://github.com/kverma17将 Camera 添加到 provider 数组中
app.module.ts 的一面,导入它:)


你收到这个是因为你被提到了。
直接回复本邮件,在GitHub上查看
https://github.com/angular/angular/issues/20339#issuecomment-358895567
或静音线程
https://github.com/notifications/unsubscribe-auth/ALjmrWMbECJKExNU3ohhoDk0OjiBPymLks5tME6ygaJpZM4QZw3x
.

上面那个是对的。你应该在 app.module 的 provider 中定义它
文件 。

2018 年 1 月 19 日下午 1:49,“杰森”通知@ github.com 写道:

抱歉,我现在不在旅行中访问计算机

2018 年 1 月 19 日星期五下午 4:13,Muhammad Umair通知@ github.com
写道:

@kverma17 https://github.com/kverma17将 Camera 添加到 provider 数组中
app.module.ts 的一面,导入它:)


你收到这个是因为你被提到了。
直接回复本邮件,在GitHub上查看
< https://github.com/angular/angular/issues/20339#issuecomment -358895567
,
或静音线程
ALjmrWMbECJKExNU3ohhoDk0OjiBPymLks5tME6ygaJpZM4QZw3x>
.


您收到此消息是因为您发表了评论。
直接回复本邮件,在GitHub上查看
https://github.com/angular/angular/issues/20339#issuecomment-358896806
或静音线程
https://github.com/notifications/unsubscribe-auth/AWbXx5egA7PdAAz_D-twVRcGtjKxLYTYks5tMFAdgaJpZM4QZw3x
.

您需要提供您的数据服务
进口 ...........
从'../dataservice'导入{数据服务};

@成分({
选择器:'......
模板网址:........
styleUrls:......,
提供者:[数据服务]
})

当我们使用功能模块时会发生这些错误只是添加

RouterModule.forRoot({}) 上面的
RouterModule.forFeature('Items',reducers)

谢谢@jersonjohn你的建议有帮助:)

确保您添加的是 HttpModule 而不仅仅是 Http。 那是我的问题。 即使添加 Http 也无法解决我的问题。 我必须添加 HttpModule,如下一段所示。

添加 import { HttpModule } from '@angular/http'; 在 app.module.ts 中,这当然意味着我也必须将它添加到下面的导入数组中。

如果您添加 import { Http } from '@angular/http'; 在 app.module.ts 本身然后它仍然会向你显示一个错误......即使你在下面的导入数组/列表中添加了对它的引用。

如果出于某种原因生成新包,则在使用 npm 时,最新版本的 CLI 不会将此添加到您的构建中。 它以前肯定已经这样做了,但现在不再这样做了。

如果您正在尝试构建这个 youtube 系列项目,那么您需要将 HttpModule 导入到您的 app.module.ts 文件中!!!
https://www.youtube.com/watch?v=pxv-0WeT44w

_Just用于信息_〜 HttpModuleHttpClientModule@angular/common/http包; 使用最新版本使升级变得容易:+1:

当我将属性移动到constructor()参数内的组件时,我遇到了同样的问题。
当我把它移回来时它就解决了。

离子服务......再次

除了上述解决方案......我认为从服务中删除 NavCtrl 也有帮助。 似乎组件的 NavCtrl 和 Service/Provider 之间存在冲突

abc

我的解决方案是在我的 component.ts 的提供者中添加我的服务

从'@angular/http'导入{HttpModule}; 然后将 HttpModule 添加到导入

,进口:[
Http模块,
浏览器模块,
IonicModule.forRoot(MyApp),
],
这为我解决了问题。
你也可以导入
从'@angular/common/http'导入{HttpClientModule}; 为方便起见

您需要在声明组件的模块中提供服务:

@NgModule({
进口:[
共享模块,
RouterModule.forChild([
{ 路径:'登录',组件:LoginComponent }
])
],
声明: [
登录组件
],
提供者:[
认证服务
]

然后在您的组件中引用它并注入构造函数。 确保您的服务具有 Injectable 装饰器

当您没有导入所需的依赖项时,会发生 Uncaught in promise 错误。
我收到了 Error: Uncaught (in promise): Error: StaticInjectorError[AngularFireAuth] 的错误
所以我为数据库导入了 AngularFireDatabaseModule <----
AngularFireAuthModule <----用于 AngularAuth

从 'angularfire2' 导入 { AngularFireModule };
// 用于 AngularFireDatabase
从 'angularfire2/database' 导入 { AngularFireDatabaseModule };
从 'angularfire2/database' 导入 { AngularFireDatabase, FirebaseObjectObservable };
// 用于 AngularFireAuth
从 'angularfire2/auth' 导入 { AngularFireAuthModule };
从'angularfire2/auth'导入{AngularFireAuth};

@NgModule ({
进口:[
AngularFireModule.initializeApp({
authDomain: '...',
数据库 URL: '...',
存储桶:'...',
消息发送者Id:'...'
}),
AngularFireDatabase 模块,
AngularFireAuth 模块
]
})

我解决了这个问题。
在'app.module.ts'
添加

从 '@angular/common/http 导入 {HttpClientModule}

和,
进口:[
浏览器模块,
Http模块,
HttpClient 模块,
IonicModule.forRoot(MyApp)
]

谢谢@mushinz

@jersonjohn感谢您在添加服务方面的指导,因为提供者帮我解决了问题!

我在 Angular 5.2.7 中遇到了这个错误,将 HttpClientModule 导入 app.module.ts 解决了这个问题,
不要忘记将 HttpClientModule 添加到导入:[] 并且不要忘记服务提供者太提供者:[]

谢谢@T-candy,
它对我有用。

只需导入 HttpClientModule 而不是 HttpModule

离子必须更改句柄名称...

使用离子 3.x

我用它来配置 firebase。
将 AngularFireDatabase 添加到 app.module.ts 中的提供者后,问题就解决了。
:):)

我所做的就是将我的服务添加到 app.module 的 providers 数组中,并且它起作用了!

我还通过从app.module.ts中的 angular/[email protected] 导入HttpModule来实现此目的

import { HttpModule } from '@angular/http';
@NgModule({
    imports: [
       ...,
       HttpModule,
       ...
})

那是因为我们没有在 app 模块中注入我们的服务。

我们必须在 app.module.ts 的两个地方传递我们的服务
导入服务
将它们添加到提供者中

从 './providers/config.service' 导入 {ConfigService};

....
提供者:[ConfigService],
...

这个错误是由为我引入 angular2-cookie 引起的。 它在“ng serve”期间有效,但在“ng build --prod”期间无效。 解决方案只是将其从项目中删除。 反正没怎么用。

我通过以下两个步骤来解决这个问题:

从'@angular/platform-b​​rowser' 导入 { BrowserModule };
...
进口:[
浏览器模块,
]

只需使用以下代码验证您的代码:

从'@angular/platform-b​​rowser' 导入 { BrowserModule };
从'@angular/core' 导入 { NgModule };
从“@angular/common/http”导入 { HttpClientModule };

@NgModule({

声明: [
.....
],
进口:[
浏览器模块,
HttpClientModule
],
提供者:[
.....
],
引导程序:[AppComponent]
})

上面的代码解决了这个问题

在应用模块中
从'@angular/forms' 导入 { FormsModule };
从“@angular/http”导入 { Http, HttpModule };
从“@angular/common/http”导入 { HttpClientModule }

在 NgModules 导入中
Http模块,
HttpClient 模块,
表单模块,

它对我有用

使用 HttpModule 作为提供者而不是 Http。 它将注册其所有服务。

我花了很多时间试图找出这个错误并尝试了所有建议,但没有一个在我的代码中起作用。 我的解决方案是将服务添加到 app.module.ts 中的提供者
提供者:[
客户服务
],

由 app.module.ts 中的更改修复

从'@angular/platform-b​​rowser' 导入 { BrowserModule };
从“@angular/core”导入 { NgModule, ErrorHandler };
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
从'@angular/common/http'导入{HttpClientModule};

从 './app.component' 导入 { MyApp };

从'../pages/users/users'导入{用户页面};
从'../pages/repos/repos'导入{ReposPage};
从'../pages/organisations/organisations'导入{组织页面};

从'@ionic-native/status-bar'导入{状态栏};
从 '@ionic-native/splash-screen' 导入 { SplashScreen };
从'../providers/github-users/github-users'导入{GithubUsersProvider};
从'../providers/people-service/people-service'导入{ PeopleServiceProvider};

@NgModule({
声明: [
我的应用程序,
用户页面,
回购页面,
组织页面
],
进口:[
HttpClient 模块,
浏览器模块,
IonicModule.forRoot(MyApp),

],
引导程序:[IonicApp],
入口组件:[
我的应用程序,
用户页面,
回购页面,
组织页面
],
提供者:[
状态栏,
启动画面,
{提供:ErrorHandler,useClass:IonicErrorHandler},
GithubUsersProvider,
人员服务提供者
]
})
导出类 AppModule {}

提供者 - 服务 - 文件

从'@angular/common/http' 导入 { HttpClient };
从“@angular/core”导入{可注射};
从“@angular/http”导入 { Http, Response, Headers, RequestOptions, URLSearchParams };
从 'rxjs/Rx' 导入 { Observable };
导入 'rxjs/add/operator/map';

从'../../models/user'导入{用户};

@Injectable()
导出类 GithubUsersProvider {

githubApiUrl = ' https://api.github.com ';
构造函数(私有 http:HttpClient){
console.log('Hello GithubUsersProvider Provider');
}

负载():可观察返回 this.http.get( ${this.githubApiUrl}/users )
.map(res => }

}

改为添加 HttpClientModule

我摆脱了“angular2-cookie/core”并编写了2个函数来获取和设置cookie,问题解决了

如果在 authservice 中使用了来自“@angular/http”的 {Http},
然后将其从 '@angular/common/http' 更改为 { HttpClient }
并在 authservice 的构造函数中将参数类型从 Http 更改为 HttpClient

然而有人回答正确,但我也指的是正确的解决方案......
1 - 如果您在 app.module 中的版本是 '6',请使用来自 '@angular/common/http' 的 'HttpClientModule' 和 'HttpClient':

2 - 否则使用来自“@angular/http”的“HttpModule”和“Http”:

@MehdiZohrevnd版本 6 应该是什么?

我有同样的问题,即使我做 HttpClientModule 导入:/请帮助

嗨,我以这种方式解决了,在 angular 6 httpModule 中已弃用并已从 Angular 中删除。

这是我的 app.module.ts

import { HttpClientModule } from '@angular/common/http';

然后添加到导入中:

imports: [
    APP_ROUTING,
    BrowserModule,
    RouterModule,
    HttpClientModule
  ],

在我的服务中

import { HttpClient, HttpHeaders, HttpClientModule } from '@angular/common/http';

这对我有用

干杯!

如上所述,这对我有用:
app.module.ts导入HttpClientModule并将其包含在您的导入数组中。
在您的服务中使用 HttpClient(构造函数中的http: HttpClient

使用 Angular 6 并尝试了所有建议......问题仍然存在......请建议

在我的情况下,我有多个解析器,并且通过在解析器周围放置 [] 来使用错误的语法,例如 [{name1:resolver1{,{name2:resolver2}] 。 相反,语法应该是 {name1:resolver1,name2:resolver2}

而不是这样做 [{name1:resolver1 { ,{name2:resolver2}]
请试试这个 [{name1:resolver1 } ,{name2:resolver2}]

这对我有用

@Injectable({
提供在:'根',
})

以防万一有人需要额外的信息,特别是如果它是关于ng test
我有这个错误(S):

错误:StaticInjectorError(DynamicTestModule)[HttpClient]:
静态注入器错误(平台:核心)[HttpClient]:
NullInjectorError: 没有 HttpClient 的提供者!

所以这对我有帮助:

我添加到我的 xyz.component。 spec.ts文件

import { HttpClientModule } from '@angular/common/http';
import { ReactiveFormsModule } from '@angular/forms';
import { RouterTestingModule } from '@angular/router/testing';

TestBed.configureTestingModule({
      imports: [ HttpClientModule, ReactiveFormsModule, RouterTestingModule ], // new line
      declarations: [ BookCreateComponent ],
      schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})

实际上,

  • 注入HttpClientModule有助于摆脱StaticInjectorError
  • 注入ReactiveFormsModule有助于摆脱Can't bind to 'formGroup' since it isn't a known property of 'form'错误。
  • 注入RouterTestingModule有助于摆脱Can't bind to 'routerLink' since it isn't a known property of 'a'.

笔记:

  • Angular v6.0.0、Angular Material v 6.0.2、Angular CLI v6.0.0。
  • 但也通过 Angular v6.1.1 和 Angular CLI v6.1.2 验证。
  • Node v10.8.0、npm v6.2.0、MacOS、Chrome v68.0。

我能够解决这个问题的方法之一是:

在 app.module.ts 文件中添加“@angular/common/http”中存在的“HttpClientModule”,并在发送 Http 请求的组件/服务打字稿文件中添加“@angular/common/http”中存在的“HttpCleint”。

在 auth.guard.ts

@Injectable({
    providedIn: 'root',
})

我解决了
从'@angular/common/http'导入{HttpClientModule};
从'@angular/http'导入{HttpModule};

进口:[
浏览器模块,
Http模块,
HttpClient 模块,
IonicModule.forRoot(MyApp)
],

为我

问题已解决!
谢谢你们 !

导入 HttpModule 和 HttpClientModule 可以解决此问题。

import { HttpClientModule } from '@angular/common/http'; import { HttpModule } from '@angular/http';

如果我们使用来自“@angular/http”的 {Http ,Headers, or any }; 在 app.component.ts 文件或 app.service.ts 文件或任何其他文件.ts 中,那么我们必须在 app.module.ts 中添加 HttpModule,然后才能在 service.ts 文件或 component.ts 文件中使用这些

image
image
image

不为我工作..

angular-cli 版本太高,问题已修复

angular-cli 版本太高,问题已修复

你怎么修好它的

angular-cli 版本太高,问题已修复

你怎么修好它的

将@angular/cli 版本降低到 6.2.8

正确的数量是 { Http } from '@angular/http'; 在 提供者

我正在使用 ionic 版本 3,以下解决方案对我有用:

在_app_module.ts_里面添加: import { HttpClientModule } from '@angular/common/http';

然后将其添加到您的导入数组中,如下所示:
imports: [ BrowserModule, IonicModule.forRoot(MyApp), HttpClientModule ],

感谢https://github.com/angular/angular/issues/20339#issuecomment -353837569

我最终将 HttpClientModule 和 auth-guard 文件导入 app.module.ts,在提供者数组中提供了 auth 保护依赖项,并将 HttpClientModule 导入到导入数组中。

import { HttpClientModule } from '@angular/common/http';
import { AuthGuardService } from './app.auth-guard.service';

[...]

@NgModule({
  declarations: [...],
  imports: [ HttpClientModule, ... ],
  providers: [ AuthGuardService, AuthService, {
    provide: AuthServiceConfig,
    useFactory: getAuthServiceConfigs,
  }],
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
  bootstrap: [AppComponent]
})

注意:我不需要降级@angular/cli

谢谢 。 我有同样的问题,但它得到了修复

我有同样的问题,但没有解决。
我的文件是:

  1. app.module.ts
    从'@angular/common/http'导入{HttpClientModule};
    从'@angular/http'导入{HttpModule};

进口:[
...
HttpClient 模块,
Http模块
]

  1. 包.json

    “开发依赖”:{
    "@angular-devkit/architect": "~0.12.3",
    "@angular-devkit/build-angular": "~0.12.3",
    "@angular-devkit/core": "~7.2.3",
    "@angular-devkit/schematics": "~7.2.3",
    "@angular/cli": "7.2.4",
    "@angular/compiler": "~7.2.2",
    "@angular/compiler-cli": "^7.2.6",
    "@angular/language-service": "~7.2.2",
    "@ionic/angular-toolkit": "~1.4.0",
    "@ionic/lab": "1.0.21",
    "@types/jasmine": "~2.8.8",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~10.12.0",
    "codelyzer": "~4.5.0",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "业力": "^4.0.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~1.1.2",
    "karma-jasmine-html-reporter": "^0.2.2",
    “量角器”:“~5.4.0”,
    "ts-node": "~8.0.0",
    "tslint": "~5.12.0",
    “打字稿”:“~3.1.6”
    },

这对我有用:
在 app.module.ts
从'@angular/http'导入{HttpModule};

@NgModule 中导入 HttpModule 并工作!

对我有帮助:
import {HttpClientModule} from '@angular/common/http';
进口 - HttpClientModule
在 app.module.ts

请记住,管道也需要在提供者的数组中。 当我将管道放在共享模块中时出现错误,导出它们,但忘记将它们添加为提供者。
providers: [MyPipe]

解决方案很简单,您可能缺少 providers 数组下的服务。 当您在开发模式下运行时,您将能够准确识别 providers 数组下缺少的服务。 当您在生产模式下运行时,错误日志不会显示提供者下确切丢失的服务。

由于不活动,此问题已自动锁定。
如果您遇到类似或相关的问题,请提交新问题。

阅读有关我们的自动对话锁定政策的更多信息。

_此操作已由机器人自动执行。_

此页面是否有帮助?
0 / 5 - 0 等级