Angular2 http.get抛出EXCEPTION:错误:未捕获(在承诺中):无法读取属性' toString' null

时间:2016-09-03 17:42:35

标签: javascript http exception angular http-headers

今天我遇到了Angular2的Http模块的get方法抛出的错误,我花了一段时间才弄清楚解决方案,所以我决定把它放在这里,让生活更轻松。否则,如果你想花几个小时调试角度/核心,那就不要读它了:)。

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

let headers = new Headers();

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

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

然后我正在向运行服务器的localhost发出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

1 个答案:

答案 0 :(得分:0)

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

解决方法是将主体显式设置为空字符串,如下所示:

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