当我部署我的项目时,我得到了这个错误。无法读取null的属性“长度”。实际上,我在代码中找不到问题所在。我分享我的interceptor.service代码。请看一下这段代码并分享给我建议。问题出在哪里,我也分享错误截图。谢谢 interceptor.service.ts
import { Injectable, Inject } from '@angular/core';
import {HttpInterceptor,HttpHandler,HttpRequest,HttpEvent,HttpClient,HttpHeaders,HttpResponse,HttpErrorResponse} from '@angular/common/http';
import {Observable} from 'rxjs/Observable';
import { LocalStorageService } from 'angular-2-local-storage';
import { LogserService } from '../logser.service';
import { Router } from '@angular/router';
import 'rxjs/add/operator/do';
import 'rxjs/add/observable/forkJoin';
import { BatchService } from '../pages/config/batchnew/batch.service';
@Injectable()
export class MainInterceptorService implements HttpInterceptor {
public error:boolean = true;
constructor(public localStorage:LocalStorageService,
public router:Router,public http:HttpClient,
public loginService:LogserService,
public BatchServ:BatchService
){
}
//@Inject(Window) private window: any
intercept(req:HttpRequest<any>,next:HttpHandler):Observable<HttpEvent<any>> {
// console.log("interceptor",req)
this.error=true;
let url:any = req.url
url = url.split('/')
url =url[url.length-1]
// console.log('url',url)
// console.log(localStorage.get("token"))
if (url =="authenticateuser"){
const request = req.clone({
headers:new HttpHeaders({
// 'VitalAuthorization': window.localStorage.getItem('token')
})
})
// console.log("interceptorHeaderLogin",request)
return next.handle(request).do((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
// do stuff with response if you want
console.log("getting 39")
}
}, (err: any) => {
if (err instanceof HttpErrorResponse) {
if (err.status === 401) {
// redirect to the login route
// or show a modal
console.log("getting 46")
alert('UnAutorized access');
// console.log(err)
}
}
});
}else{
console.log("Line 51")
const request = req.clone({
headers:new HttpHeaders({
'Authorization': window.localStorage.getItem('token')
})
})
// console.log("interceptorHeader",request)
return next.handle(request).do((event: any) => {
console.log("getting in interseptor")
}, (err: any) => {
console.log('error401')
// console.log('interceptorStatus',err.statusCode)
if (err instanceof HttpErrorResponse) {
if (err.status == 501) {
// redirect to the login route
// or show a modal
console.log('error72')
if( this.error===true){
this.error=false;
// this.router.navigate(['/login/'+this.localStorage.get('url')])
alert('Session expired ...');
let data = JSON.parse(this.localStorage.get('userData'))
this.BatchServ.createLogin(data).subscribe((data:any) => {
if (data.validAuthentication && data.validAuthentication != "" && data.validAuthentication != "null" && data.validAuthentication !="false"){
window.localStorage.setItem('token',data.validAuthentication);
console.log("line83")
console.log(window.localStorage.getItem('token'));
window.location.reload();
}
else{
}
});
}
console.log(err)
}
}
});
}
}
}
并且在我的屏幕截图下方