簡體   English   中英

Angular Universal RxJs“ Observable_1.Observable.throw不是函數”

[英]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()

我在網上看到的ppl都忘記了import 'rxjs/add/observable/throw'; 但我有,錯誤只發生在服務器端渲染期間。 我輸入了錯誤的Observable嗎?

版本

rxjs 6.3.2 Angular CLI: 6.2.4節點: 9.2.0操作系統: darwin x64 Angular: 6.1.7 rxjs-compat: ^ 6.3.3

從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”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM