Angular Universal RxJs "Observable_1.Observable.throw is not a function"



我在通用服务器控制台日志上遇到以下错误(仅使用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()

在整个Internet上,我看到PPL都忘记了import 'rxjs/add/observable/throw';,但是我有这个错误,并且错误仅在服务器端渲染期间发生。我在导入错误的Observable吗?

版本

rxjs 6.3.2 Angular CLI: 6.2.4 节点: 9.2.0 OS: Darwin X64 Angular: 6.1.7 rxjs-compat:^6.3.3

在rxjs 6开始,您需要使用thowerror而不是投掷。

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(^)符号。delete package.lock.json文件和执行'npm install'。

最新更新