Ich habe das C3-Balkendiagramm mit Winkel 5.2.0 erstellt. Alle arbeiten gut. Aber ich möchte nur den Test mit Karma und Jasmin mit npm run test
ausführen. Ich habe aber folgende Probleme. Ich hoffe, es hängt mit der Funktion von rxjs zusammen. Aber ich kann den Fehler nicht verstehen. Bitte helfen Sie jedem, das Problem zu lösen.
TypeError: _this.handler.handle is not a function
at MergeMapSubscriber.project (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/@angular/common/esm5/http.js:1466:80)
at MergeMapSubscriber.webpackJsonp.../../../../rxjs/_esm5/operators/mergeMap.js.MergeMapSubscriber._tryNext (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/operators/mergeMap.js:128:1)
at MergeMapSubscriber.webpackJsonp.../../../../rxjs/_esm5/operators/mergeMap.js.MergeMapSubscriber._next (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/operators/mergeMap.js:118:1)
at MergeMapSubscriber.webpackJsonp.../../../../rxjs/_esm5/Subscriber.js.Subscriber.next (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/Subscriber.js:92:1)
at ScalarObservable.webpackJsonp.../../../../rxjs/_esm5/observable/ScalarObservable.js.ScalarObservable._subscribe (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/observable/ScalarObservable.js:51:1)
at ScalarObservable.webpackJsonp.../../../../rxjs/_esm5/Observable.js.Observable._trySubscribe (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/Observable.js:172:1)
at ScalarObservable.webpackJsonp.../../../../rxjs/_esm5/Observable.js.Observable.subscribe (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/Observable.js:160:1)
at MergeMapOperator.webpackJsonp.../../../../rxjs/_esm5/operators/mergeMap.js.MergeMapOperator.call (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/operators/mergeMap.js:92:1)
at Observable.webpackJsonp.../../../../rxjs/_esm5/Observable.js.Observable.subscribe (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/Observable.js:157:1)
at FilterOperator.webpackJsonp.../../../../rxjs/_esm5/operators/filter.js.FilterOperator.call (http://localhost:9876/_karma_webpack_/webpack:/C:/Workspace/datawens-master/node_modules/rxjs/_esm5/operators/filter.js:61:1)
Ich konnte dieses Problem lösen, indem ich die folgenden Änderungen in app.module.ts vorgenommen habe. Hoffe das hilft.
import { HttpClient } from '@angular/common/http';
import { HttpClientModule } from '@angular/common/http';
...
...
@NgModule({
declarations: [
MyApp,
HomePage,
CameraPage,
],
imports: [
BrowserModule,
// HttpClient,
HttpClientModule,
Ich bin auf dieses Problem gestoßen, als ich versuchte, meine Tests in HttpTestingController
umzuwandeln. Diese Antwort unterdrückt einfach das Problem und druckt es auf die Konsole. Es gibt vieles, was ich für meine Lösung unten immer noch nicht verstehe, aber hoffentlich kann es jemandem helfen.
Das Problem in meiner Bewerbung war, dass ich HttpHandler
in meiner providers
-Liste zur Verfügung stellte. Dies führte dazu, dass _this.handler
eine HttpHandler
in der fehlerhaften Zeile in http.js
im Stack-Trace war.
var /** @type {?} */ events$ = concatMap.call(of(req), function (req) { return _this.handler.handle(req); });
Ich habe HttpHandler
von den Anbietern in meinem TestBed.configureTestModule
entfernt und dann war _this.handler
eine HttpInterceptorHandler
, die die entsprechende handle
-Funktion hatte.
Anscheinend kann ein Abonnement ohne Fehlerbehandlung dazu führen, wie hier . Die Antwort in diesem Link liefert das folgende Beispiel:
user_login() {
this.userService.login(credentials).subscribe((res) => {
console.log(res);
}, (error) => {
console.log(error);
});