Angular TypeError:无法在拦截器中读取null的属性“ length”

时间:2018-12-12 10:49:13

标签: angular

当我部署我的项目时,我得到了这个错误。无法读取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)
                }
              }
            });

    }

    }

   }

并且在我的屏幕截图下方

enter image description here

0 个答案:

没有答案