我已经使用 NSwagStudio 自动生成了一个 WebAPI 服务模块,以将我的 Ionic/Angular 应用程序和我的 web 服务连接在一起。此服务 (WebApiConnector.Client) 配置为注入:
imports: [
BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
AngularFireModule.initializeApp(firebaseConfig),
AngularFireAuthModule,
HttpClientModule
],
providers: [
GooglePlus,
StatusBar,
SplashScreen,
{ provide: WebApiConnector.API_BASE_URL, useValue: environment.apiURL },
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptorService, multi: true },
{ provide: ErrorHandler, useClass: GlobalErrorHandler},
AuthService,
WebApiConnector.Client
],
当我在浏览器上运行应用程序或在 android 设备上调试它时,一切都像一个魅力,但是当我在生产环境中构建它时:
ionic cordova build android --prod --release
注入 WebAPI 服务的 HttpClient 似乎未定义,因为在执行第一次调用时,应用程序陷入此异常:
未捕获(承诺):TypeError:无法读取未定义的属性“请求”
调用在 ngAfterViewInit() 钩子内部执行。
我还尝试将 HttpClient 注入到注入“WebApiConnector.Client”的页面中,以手动执行对服务器的请求,但效果很好。
这是服务模块配置
import { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class Client {
private http: HttpClient;
private baseUrl: string;
protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;
constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {
this.http = http;
this.baseUrl = baseUrl ? baseUrl : "/webapi_2";
}
这是引发异常的代码片段:
return this.http.request("get", url_, options_)
问题出在哪里?