Я изменяю существующий Angular проект (не мой), добавляю новый вызов в мой внешний API.
Это метод обслуживания:
getUserName(): Observable<any> {
return this.http.get<any>(environment.apiUrl + URLS.USER_NAME)
}
И я используйте его на appcomponent.ts следующим образом:
this.userService.getUserName().subscribe((name) => {
this.user = name
})
При выполнении я получаю следующую ошибку:
core. js: 1673 ERROR TypeError : Невозможно прочитать свойство 'length' со значением null в HttpHeaders .pu sh .. / node_modules/@angular/common/fesm5/http.js.HttpHeaders.applyUpdate ( http. js: 199) на http. js: 170 на Array.forEach () на HttpHeaders.pu sh .. / node_modules/@angular/common/fesm5/http.js.HttpHeaders.init (http. js: 170) по адресу HttpHeaders.pu sh .. / node_modules/@angular/common/fesm5/http.js.HttpHeaders.forEach (http. js: 235) по адресу Observable._subscribe (http. js: 1435) на Observable.pu sh .. / node_modules / rxjs / _esm5 / internal / Observable. js .Observable._trySubscribe (Observable. js: 43 ) в Observable.pu sh .. / node_modules / rxjs / _esm5 / intern al / Observable. js .Observable.subscribe (Observable. js: 29) на MapOperator.pu sh .. / node_modules / rxjs / _esm5 / internal / operator / map. js .MapOperator.call ( map. js: 18) at Observable.pu sh .. / node_modules / rxjs / _esm5 / internal / Observable. js .Observable.subscribe (Observable. js: 24)
Кажется, это проблема заголовков или какая-то ошибка подписки / наблюдаемая, но я не могу найти, где находится ошибка.
- Что-то не так с моим кодом?
- Это может быть существующий перехватчик, который изменяет запрос?
Обратите внимание, что перед выполнением запроса выдается исключение, поэтому это может быть проблема клиента при создании этого запроса.
Редактировать:
Это единственный перехватчик, который я нашел:
@Injectable({
providedIn: 'root'
})
export class TenantHttpInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (req.url.indexOf(environment.apiTFSmin) === -1) {
let tenantReq = req.clone({ headers: req.headers.set('current', sessionStorage.getItem('current')) })
if (sessionStorage.getItem('tenant') != null && sessionStorage.getItem('newTenant') == null) {
tenantReq = tenantReq.clone({ headers: tenantReq.headers.append('Tenant', sessionStorage.getItem('tenant')) })
} else if (sessionStorage.getItem('newTenant') != null) {
tenantReq = tenantReq.clone({ headers: tenantReq.headers.append('Tenant', sessionStorage.getItem('newTenant')) })
sessionStorage.removeItem('newTenant')
}
if (req.method === 'POST' || req.method === 'PUT') {
tenantReq = tenantReq.clone({ headers: tenantReq.headers.append('Content-Type', 'application/json') })
}
return next.handle(tenantReq)
} else {
const tenantReq = req.clone({ headers: req.headers.set('Authorization', 'Bearer ' + btoa('pescanilla-ext:m12345678*')) })
// const tenantReq = req.clone()
return next.handle(tenantReq)
}
}
}