当前位置: 首页 > 知识库问答 >
问题:

无法在Angular Service方法调用中读取null的属性“length”?

伏默
2023-03-14

我正在修改一个现有的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
})

执行时出现以下错误:

node_modulesERROR TypeError:无法在node_modules读取null的属性“长度”。/map.js.MapOperator.call/@角/公共/费斯姆5/node_modules更新(_subscribe)在node_modules_esm5每个()在_trySubscribe。/map.js:18/@角/公共/费斯姆5/node_modules(_esm5)在node_modules。/Observable.push./@角/公共/费斯姆5/_esm5每个(node_modules)在http.js:235。Observable.js.Observable.subscribe(_esm5)在Observable.push.。/Observable.js:24/rxjs/Array.for/内部/Observable.js.可观察。HttpHeaders.push.(Observable.js:43)在Observable.push.。/http.js.HttpHeaders.init/rxjs/http.js:170/内部/Observable.js.Observable.subscribe(Observable.js:29)在MapOperator.push.。/HttpHeaders.push./rxjs/http.js.HttpHeaders.for/内部/运算符/core.js:1673(HttpHeaders.push.)在http.js.HttpHeaders.apply。/http.js:235/rxjs/http.js:1435/内部/http.js:199(http.js:170)

这似乎是标头问题或某些订阅/可观察的错误,但我找不到错误所在。

  • 我的代码有问题吗?
  • 可能是现有的拦截器正在修改请求?

请注意,异常是在发出请求之前引发的,因此在创建该请求时一定是客户端问题。

编辑:

这是我找到的唯一拦截器:

@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)
    }
  }
}

共有1个答案

唐恺
2023-03-14

您没有检查“当前”标头是否实际存在于存储中。

let tenantReq = req.clone({ headers: req.headers.set('current', sessionStorage.getItem('current')) })

编辑:一旦您尝试发送带有空值标头的请求,Http客户端将抛出错误。尝试用静态值替换sessionStorage.get项目('当前')并对其进行测试。

 类似资料:
  • 问题内容: 您好,我正在尝试将React-Router与Firebase配合使用。但这给了我这个错误。 无法读取null的属性“ props” 这正是代码,我正在使用我的react-router 向下代码在组件上作为loginpanel组件。 我的react路由器在main.jsx上声明,我的react-router看起来像这样。 问题答案: 在回调中,指针不再指向您的React组件。有很多方法可

  • 我收到以下JavaScript错误: TypeError:无法读取null的属性“title” 代码如下: mds-iMac: cmscart imac$nodemo app[nodemo] 1.11.0[nodemo]随时重启,输入[nodemo]观看:.[nodemo]启动(node: 2274)DeprecationWarning:在猫鼬中被弃用 [nodemon]应用程序崩溃-正在等待文件

  • 我在我的Gatsby应用程序中得到了这个错误,该应用程序为作者提取places数据。当author.social的map()点为null时,该错误将显示 谢谢

  • 当我通过Ajax重新加载Datatable时,我不断得到“UncaughtTypeError:无法读取null的属性'aoData'。我基本上有一个主数据表(表1),每行有一个链接,其中包含一个包含另一个数据表的弹出模式。(我使用PHP填充模态和内部表的特定类和id,以确保它们都保持唯一。)下面是解释我所说内容的代码: 位于modals内部的数据表行可以通过ajax进行添加、删除和编辑。在我运行a

  • 问题内容: 我收到错误消息,文件中的重要部分在…我想知道,因为game.js在下面的目录中,所以找不到画布?我该怎么办? ./index.html: ./javascript/game.js: 问题答案: 我想问题是您的js在加载html之前运行。 如果使用的是jquery,则可以使用文档就绪函数包装代码: 或者只是将您的js放在 。

  • 我知道有类似的线程讨论范围问题。 使用以下组件 当您单击时,您会得到的属性'setState' 我知道你可以像这样做,但所有这些看起来都很奇怪,只是为了让它工作。 什么被认为是最优雅的方式来做到这一点?当然,人们必须有一个首选的方式,除了眼睛疼痛之外,还有其他好处?