Универсальные угловые RxJs "Observable_1.Observable.throw не является функцией" - PullRequest
0 голосов
/ 22 февраля 2019

В журнале консоли универсального сервера появляется следующая ошибка (только с SSR, а не ng serve)

ОШИБКА TypeError: Observable_1.Observable.throw не является функцией

Вот как настроен мой сервис

import { Injectable, Injector } from '@angular/core';
import { HttpClient, HttpParams, HttpErrorResponse } from '@angular/common/http';
import { Headers, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { Subject, from } from 'rxjs';
import 'rxjs/add/observable/throw';


@Injectable()
export class BcProductService {

    constructor(
        private http: HttpClient,
        private configsService: ConfigsService,
        private injector: Injector
    ) {}

    getProductById(product_id) {
        const data = { product_id: product_id };
        return this.http.get<any>('/getProductById', { params: data }).catch(err => this.errHandler(err));
    }

    errHandler(error: HttpErrorResponse) {
        console.error(error);
        return Observable.throw(error.error || "unknown error");
    }

}

*** Я подписываюсь на getProductById() в другом компоненте.

По всему интернету я вижу, что люди забываютimport 'rxjs/add/observable/throw'; но у меня это есть, и ошибка происходит только во время рендеринга на стороне сервера.Я неправильно импортирую Observable?

Версии

rxjs 6.3.2 Угловой CLI: 6.2.4 Узел: 9.2.0 ОС: Дарвин x64 Угловой: 6.1.7 rxjs-compat: ^ 6.3.3

1 Ответ

0 голосов
/ 22 февраля 2019

Начиная с RxJS 6, вам нужно использовать throwError вместо throw.

import { throwError } from 'rxjs';

errHandler(error: HttpErrorResponse) {
    console.error(error);
    return Observable.throwError(error.error || "unknown error");
}

Package.json:

"rxjs": "6.3.2",
"rxjs-compat": "6.2.2",

Примечание: carot (^) символ не используется.Удалите файл package.lock.json и выполните 'npm install'.

...