后台管理系统启动正常,在登录页面点登录就报错(本人是熟悉vue,他这请求库不是axios也不是fetch): import { Http } from '@angular/http'; // 报错信息: app.service.ts:145 ERROR Error: Uncaught (in promise): TypeError: rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable.throw is not a function TypeError: rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable.throw is not a function at CatchSubscriber.selector (http.service.ts:38:30) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241007/8095fc8fb2d954303746552e18bbea68.png) 接口单独拿工具(postman或apifox等)测是正常的,也就是后端无问题也不是跨域问题。 初步判断是这个项目包版本的问题。我也不能大改不敢升级最新版,太多包是8年前的了。只能小改,如何改 "dependencies": { "@angular/animations": "^6.1.0", "@angular/common": "^6.1.0", "@angular/compiler": "^6.1.0", "@angular/core": "^6.1.0", "@angular/forms": "^6.1.0", "@angular/http": "^6.1.0", "@angular/platform-browser": "^6.1.0", "@angular/platform-browser-dynamic": "^6.1.0", "@angular/router": "^6.1.0", "@antv/data-set": "^0.8.9", "@antv/g2": "^3.5.7", "core-js": "^2.5.4", "essence-ng2-print": "^1.1.0", "ng-zorro-antd": "^1.6.0", "rxjs": "~6.2.0", "zone.js": "~0.8.26", "tinymce": "^5.0.2", "@tinymce/tinymce-angular": "^3.0.0" }, "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241007/8569f758e8aedd33928999c52514af6a.png) // app.service.ts 代码头如下: import { Injectable } from '@angular/core'; import { Http } from '@angular/http'; import { ActivatedRoute, Router } from '@angular/router'; //表单 绑定规则、控件组、响应式表单验证(驱动式表单验证) import { FormBuilder, FormGroup, Validators } from '@angular/forms'; //消息提示 import { NzMessageService, NzModalService } from 'ng-zorro-antd'; @Injectable() export class AppService { // http.service.ts 文件如下: import { Injectable } from '@angular/core'; import { Http, Request, RequestOptionsArgs, Response, RequestOptions, ConnectionBackend, Headers } from '@angular/http'; import { Observable } from 'rxjs'; import { map, catchError } from 'rxjs/operators'; @Injectable() export class HttpService extends Http { constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) { super(backend, defaultOptions); } request(url: string | Request, options?: RequestOptionsArgs): Observable { //根据不同的生产环境配置http前缀 typeof url == 'string' ? url : url.url; return this.intercept(super.request(url, options)); } get(url: string, options?: RequestOptionsArgs): Observable { return this.intercept(super.get(url, options)).pipe(map(res => res.json())); } post(url: string, body: any, options?: RequestOptionsArgs): Observable { return this.intercept(super.post(url, body, this.getRequestOptionArgs(options))).pipe(map(res => res.json())); } put(url: string, body: any, options?: RequestOptionsArgs): Observable { return this.intercept(super.put(url, body, this.getRequestOptionArgs(options))); } delete(url: string, options?: RequestOptionsArgs): Observable { return this.intercept(super.put(url, this.getRequestOptionArgs(options))); } getRequestOptionArgs(options?: RequestOptionsArgs): RequestOptionsArgs { options = options == null ? new RequestOptions() : options; options.headers = options.headers == null ? new Headers() : options.headers; let token = localStorage.getItem('token'); options.headers.append('Content-Type', 'text/plain;charset=UTF-8'); options.headers.set('token', token); return options; } intercept(observable: Observable): Observable { return observable.pipe(catchError((err, source) => { return Observable.throw(err); })); } }