【问题标题】:How to resolve SyntaxError: Unexpected token M in JSON at position 0?如何解决 SyntaxError:位置 0 处 JSON 中的意外标记 M?
【发布时间】: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


【解决方案1】:

我试过了,对我有用

public async getAuthInfo(): Promise<{ accessToken: string }> {
const authInfo = <any>browser.executeScript("return JSON.parse(localStorage.getItem('auth'));");
if (!authInfo) { throw {error : 'No authorization details found in local storage.'};}
return authInfo;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-08
    • 2020-07-02
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 2017-07-29
    • 1970-01-01
    相关资源
    最近更新 更多