2017-08-26 49 views
0

我正在使用angular2-jwt我的angular2/4应用程序中的身份验证插件。但建立环境后,我可以使用一次。重建项目后出现下面的错误。angular2-jwt - 调用函数'provideAuth',不支持函数调用

错误:

ERROR in Error encountered resolving symbol values statically. Calling function 'provideAuth', function calls are not supported. Consider replacing the function or lambda with a reference to an exported function, resolving symbol AppModule in /home/user/projects/project/src/app/app.module.ts, resolving symbol AppModule in /home/user/projects/project/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); 
} 

在供应商进口但错误将是:

ERROR Error: Uncaught (in promise): Error: No provider for AuthHttp!

在供应商加入AuthHttp后的误差将是:

ERROR Error: Uncaught (in promise): Error: No provider for AuthConfig!

回答

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); 
    } 
+0

如果我改变了这样的代码,该错误会**未捕获的错误:无法解析AuthConfig的所有参数:(?)。** –

+0

配置参数传递给'AuthConfig'函数? – Rajez