错误:位置0的JSON中的意外令牌u

时间:2018-08-30 13:32:36

标签: angular typescript

我的TypeScript代码有问题:

  

SyntaxError:JSON中位置0处的意外令牌u:

首先,浏览器控制台中的错误是: enter image description here

浏览器显示的TypeScript错误:

    roleMatch(allowedRoles): boolean {
  var isMatch = false;
  var userRoles: string[] = JSON.parse(localStorage.getItem('userRoles'));
  allowedRoles.forEach(element => {
    if (userRoles.indexOf(element) > -1) {
      isMatch = true;
      return false;
    }
  });
  return isMatch;
}

以及其他错误的部分:

canActivate(
  next: ActivatedRouteSnapshot,
  state: RouterStateSnapshot): boolean {
  if (localStorage.getItem('userToken') != null) {
    let roles = next.data["roles"] as Array<string>;
    if (roles) {
      var match = this.userService.roleMatch(roles);
      if (match) return true;
      else {
        this.router.navigate(['/forbidden']);
        return false;
      }
    }
    else
      return true;
  }
  this.router.navigate(['/login']);
  return false;
}

1 个答案:

答案 0 :(得分:1)

正如user184994所说,localStorage.getItem('userRoles')很可能返回undefined

  

SyntaxError:JSON中位置0处的意外令牌u:   是意味着JSON分析器在位置0失败,因为找到了字母u

JSON必须具有有效的JSON data type

您可能希望将userRoles初始化为空数组。

var userRoles: string[] = [];
var userRolesStr = localStorage.getItem('userRoles');
if (userRolesStr) {
  userRoles = JSON.parse(userRolesStr);
}