【发布时间】:2021-07-13 15:45:45
【问题描述】:
在尝试获取存储在本地存储中的密钥“auth”的授权信息时,我收到 SyntaxError: Unexpected token M in JSON at position 0。
附加信息:针对键“auth”存储的值基本上是键值对的对象。
代码如下:
public async getAuthInfo(): Promise<{ accessToken: string }> {
const authInfo = <string>(<any>browser.executeScript("return localStorage.getItem('auth');"));
if (!authInfo) {
throw { error: 'No authorization details found in local storage.' };
}
try {
return JSON.parse(authInfo);
} catch (error) {
console.log("Error: " + error);
}
}
const authInfo = await this.getAuthInfo();
this.httpService.headers['Authorization'] = `Bearer ${authInfo.accessToken}`;
authInfo 值看起来像这样
"{\"accessToken\":\"yuiooy\",\"authenticated\":true,\"sessionAcquired\":true}"
请帮我解决这个问题。
【问题讨论】:
-
再次检查
authInfo的值是多少。听起来它不是有效的 JSON,实际上以M开头 -
@phuzi 我用一些关于 authInfo 值的信息更新了我的问题。请看一下
-
您能否确认
authInfo上的内容,因为这与您看到的错误不符! -
@phuzi 请查看更新后的描述。另外,authInfo 上的内容是什么意思?
-
@phuzi 的意思是
authInfo确实not 看起来像{ accessToken: value, expiry: value },因为这样不会产生错误“SyntaxError: Unexpected token M”。该错误意味着JSON.parse的输入以字符M开头,因此您实际使用的任何输入都以M开头。
标签: javascript json syntax-error jsonparser unexpected-token