今天我遇到了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
答案 0 :(得分:0)
Angular正在抛出异常,因为GET请求是在没有正文的情况下发送的,并且没有检查null
。因此,当Angular试图强制请求字符串时,它实际上是在toString()
上调用null
方法。
解决方法是将主体显式设置为空字符串,如下所示:
let options = new RequestOptions({
headers: headers,
body: ''
});