我想记录到客户端角度错误到服务器,所以我遵循this和this stackoverflow答案并实现了一个服务,使一个http呼叫服务器。目前,logError
方法受到了攻击,但是没有对服务器进行http调用。
export class AngularLoggerService {
constructor(private http: HttpClient) {}
logError(error: Error) {
console.log(error.stack); // line is printed to console
this.http.post('/angular/log', {
message: error.stack
});
}
}
this.http.post
返回一个observable,除非你在observable中使用.subscribe
方法,服务器调用不会改变你的代码如下
export class AngularLoggerService {
constructor(private http: HttpClient) {}
logError(error: Error) {
console.log(error.stack); // line is printed to console
this.http.post('/angular/log', {
message: error.stack
}).subscribe((res) => console.log(res));
}
}
您需要将post
方法中的baseUrl(服务器URL)和subscribe
传递给Observable
,以便成功获取有关错误日志的响应。这是一个解决方案。
service.ts
import { Injectable, isDevMode } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class AngularLoggerService {
baseUrl = "https://yourserver.com"
constructor(private http: HttpClient) {}
logError(error: Error) {
console.log(error.stack);
this.http.post(this.baseUrl +'/angular/log', {
message: error.stack
}).subscribe( (response) => {
console.log(response);
});
}
}
Here is Forked Stackblitz solution
希望这会有所帮助!