【问题标题】:angular2-jwt - Calling function 'provideAuth', function calls are not supportedangular2-jwt - 调用函数“provideAuth”,不支持函数调用
【发布时间】:2018-02-04 06:11:56
【问题描述】:

我在我的 angular2/4 应用程序中使用 angular2-jwt 插件进行身份验证。但在设置环境后,我可以使用它一次。重建项目后出现以下错误。

错误:

错误中的错误遇到静态解析符号值。调用函数'provideAuth',不支持函数调用。考虑将函数或 lambda 替换为对导出函数的引用,解析 /home/user/projects/project/src/app/app.module.ts 中的符号 AppModule,解析 /home/user/projects/project/ 中的符号 AppModule src/app/app.module.ts

我的 app.module.ts

@NgModule({
imports: [
   HttpModule,
   BrowserModule,
   BrowserAnimationsModule,
   AppRoutingModule,
   BsDropdownModule.forRoot(),
   TabsModule.forRoot(),
   ChartsModule,
   LaddaModule,
   FormsModule,
   ToasterModule
],
declarations: [
   AppComponent,
   LoginComponent,
   FullLayoutComponent,
   AsideToggleDirective,
   DashboardMenuComponent,
],
providers: [
  {
  provide: LocationStrategy,
  // useFactory: authHttpServiceFactory,
  // deps: [Http, RequestOptions],
  useClass: HashLocationStrategy,
  },
  AuthenticationService,
  AuthGuard,
  Auth,
  AuthHttp,
  provideAuth({
     headerName: 'Authorization',
     headerPrefix: 'bearer',
     tokenName: 'token',
     // tokenGetter: (() => localStorage.getItem('token')),
     globalHeaders: [{'Content-Type': 'application/json'}],
     noJwtError: true
})
],
bootstrap: [AppComponent]
})

收到此错误后,我像这样导出函数:

export function authHttpServiceFactory(http: Http, options: RequestOptions) {
return new AuthHttp(new AuthConfig(), http, options);
}

imported 在提供程序中,但错误将是:

错误错误:未捕获(承诺):错误:没有 AuthHttp 提供者!

在提供程序中添加 AuthHttp 后,错误将是:

错误错误:未捕获(承诺):错误:没有 AuthConfig 提供者!

【问题讨论】:

    标签: angular angular2-jwt


    【解决方案1】:

    提供为

        providers: [
         AuthHttp,
         {
            provide: AuthHttp,
            useFactory: authHttpServiceFactory,
            deps: [Http, RequestOptions]
         }
       ]
    
    
       export function authHttpServiceFactory(http: Http, options: RequestOptions) {
           return new AuthHttp(new AuthConfig({
              headerName: 'Authorization',
              headerPrefix: 'bearer',
              tokenName: 'token',
              // tokenGetter: (() => localStorage.getItem('token')),
              globalHeaders: [{'Content-Type': 'application/json'}],
              noJwtError: true
          }), http, options);
        }
    

    【讨论】:

    • 如果我像这样更改我的代码,错误将是 Uncaught Error: Can't resolve all parameters for AuthConfig: (?).
    • 配置参数传递给AuthConfig函数?
    猜你喜欢
    • 2017-03-30
    • 2017-06-08
    • 2018-03-28
    • 2017-09-20
    • 2017-06-06
    • 2017-07-14
    • 2017-06-07
    • 2017-01-21
    • 2018-06-11
    相关资源
    最近更新 更多