【问题标题】:Argument type string | null is not assignable to parameter [duplicate]参数类型字符串 | null 不可分配给参数 [重复]
【发布时间】:2021-07-18 16:39:59
【问题描述】:

我正在尝试为我的应用程序使用授权事实。为此,我使用本地存储来获取项目。当用户登录时,我已经将令牌存储在本地存储中,当注销时,本地存储项目将被删除。我试图检查当用户登录然后发现该项目时,我的后端的凭据,否则没有。为此,我使用下面的代码来处理我的要求:-

Demo.Service.ts

const httpOptions = {
  headers : new HttpHeaders({
    Authorization: 'Bearer ' + JSON.parse(localStorage.getItem('user')).token
  })
}

但是我发现了这个错误:-

我将如何解决这个问题。我将不胜感激所有的想法。请帮助。

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    我认为,发生此错误是因为您没有在本地存储中的用户对象上设置令牌,因此它实际上是在尝试查找 null.token

    试试下面的代码。

    Authorization: 'Bearer ' + JSON.parse(localStorage.getItem('user') || '{}').token
    

    如果在本地存储中找不到 user 对象,则此处传递一个空的 JSON 对象 {}。 我认为,它应该可以解决您的问题:-

    【讨论】:

    • {}.token 会提供什么?可能不是任何人想要的!
    • @GaëlJ 为什么没有人愿意?他希望凭证签入后端将这个令牌类型传递给我认为据我所知的找到的值。
    • @GaëlJ 但这个答案按预期工作!
    • 我的意思是可能的空值应该在标头之外处理,甚至可能不应该发送请求。
    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    相关资源
    最近更新 更多