J'ai créé le graphique à barres c3 avec la version angulaire 5.2.0. Tout fonctionne bien. Mais je veux juste lancer le test en utilisant du karma et du jasmin avec npm run test
. Mais j'ai eu les problèmes suivants. J'espère que c'est lié à la fonction rxjs. Mais je ne peux pas comprendre le noyau d'erreur. S'il vous plaît, aidez quelqu'un à résoudre ce problème.
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)
J'ai pu résoudre ce problème en apportant les modifications suivantes à mon app.module.ts. J'espère que cela t'aides.
import { HttpClient } from '@angular/common/http';
import { HttpClientModule } from '@angular/common/http';
...
...
@NgModule({
declarations: [
MyApp,
HomePage,
CameraPage,
],
imports: [
BrowserModule,
// HttpClient,
HttpClientModule,
J'ai rencontré ce problème en essayant de convertir mes tests pour utiliser HttpTestingController
. This answer supprime simplement le problème et l'imprime sur la console. Il y a beaucoup de choses que je ne comprends toujours pas pour ma solution ci-dessous, mais j'espère que cela pourra aider quelqu'un.
Le problème dans ma candidature était que je fournissais HttpHandler
dans ma liste providers
. Cela causait _this.handler
d'être une HttpHandler
sur la ligne incriminée dans http.js
, dans la trace de la pile.
var /** @type {?} */ events$ = concatMap.call(of(req), function (req) { return _this.handler.handle(req); });
J'ai supprimé HttpHandler
des fournisseurs dans mon TestBed.configureTestModule
et _this.handler
était alors une HttpInterceptorHandler
dotée de la fonction handle
appropriée.
Cela ressemble à un abonnement sans traitement d'erreur peut causer cela, comme indiqué ici . La réponse dans ce lien fournit l'exemple suivant:
user_login() {
this.userService.login(credentials).subscribe((res) => {
console.log(res);
}, (error) => {
console.log(error);
});