【问题标题】:Angular2 http.get throws EXCEPTION: Error: Uncaught (in promise): Cannot read property 'toString' of nullAngular2 http.get 抛出异常:错误:未捕获(承诺):无法读取 null 的属性“toString”
【发布时间】:2016-09-03 17:42:34
【问题描述】:

今天我遇到了Angular2的Http模块的get方法抛出的错误,我花了一段时间才弄清楚解决方案,所以我决定把它放在这里,让人们的生活不那么痛苦。否则,如果您想花数小时调试 angular/core,请不要阅读它:)。

我的用例是关于发送没有正文有效负载的 GET 请求,并将 jwt 令牌设置为标头,如下所示:

let headers = new Headers();

headers.append('Content-Type', 'application/json');
headers.append('Authorization', token);

let options = new RequestOptions({
    headers: headers
});

然后我向运行服务器的本地主机发出 get 请求:

return this.http.get('http://localhost:3000/someApiUrl', options)
    .toPromise()
    .then(this.extractData)
    .catch(this.handleError);

但无论我做什么 Angular 都会抛出异常

EXCEPTION: Error: Uncaught (in promise): Cannot read property 'toString' of null

【问题讨论】:

    标签: javascript http exception angular http-headers


    【解决方案1】:

    Angular 抛出异常是因为 GET 请求是在没有正文的情况下发送的,并且没有检查 null。因此,当 Angular 试图将请求的主体强制转换为字符串时,它实际上是在 null 上调用 toString() 方法。

    解决方案是将正文显式设置为空字符串,如下所示:

        let options = new RequestOptions({
            headers: headers,
            body: ''
        });
    

    【讨论】:

      猜你喜欢
      • 2020-09-17
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 2016-12-09
      • 2021-12-07
      • 2023-03-31
      • 2020-11-08
      • 2023-03-13
      相关资源
      最近更新 更多