Aurelia - 获取 - 获取错误TS2345标题:{“Content-Type”:string; }; }'不可分配

时间:2017-11-05 06:33:06

标签: aurelia

这是有效的,现在由于某种未知的原因它给出了这个错误:

  

错误TS2345:类型'{方法:字符串; body:string; headers:{“Content-Type”:string; }; }'不能赋值给'RequestInit |类型的参数未定义”。     输入'{method:string; body:string; headers:{“Content-Type”:string; }; }'不能赋值为'RequestInit'。       属性“标题”的类型不兼容。         输入'{“Content-Type”:string; }'不能赋值为'Headers | string [] [] |未定义”。           对象文字只能指定已知属性,而“内容类型”'在类型'标题|中不存在string [] [] |未定义”。

它在FETCH上,如果我注释掉..

headers: {
      "Content-Type": "application/json;charset=UTF-8"
    }

再次输入应用程序显示,但当然它无法使用正确的内容类型到达服务器。

我不知道为什么现在这个错误,我已经看了类似的东西,但找不到东西。

以下是方法:

submitLogin() {
if (this.controller.validate()) {
  // Lets do a fetch!

  this.login.Username = this.username;
  this.login.Password = this.password;

  const task = fetch("/api/jwt", {
    method: "POST",
    body: JSON.stringify(this.login),
    headers: {
      "Content-Type": "application/json;charset=UTF-8"   //  HERE!
    }
  })
    .then(response => response.json())
    .then(data => {
      this.tokenService.saveJWT(data);
      this.userService.saveUserName();
      this.router.navigate("home");
    })
    .catch(error => {
      this.tokenService.clearJWT();
    });
}

}

有谁知道为什么会这样,更重要的是如何解决它。

1 个答案:

答案 0 :(得分:0)

好的,出于某种原因,这只是停止了工作。有效地显示塞子。我找到了this question并改变了我对以下内容实现标头的方式,现在可以正常使用了。

const task = fetch("/api/jwt", {
    method: "POST",
    body: JSON.stringify(this.login),
    headers: new Headers({ 'content-type': 'application/json' })
  })
    .then(response => response.json())
    .then(data => {
      // First save the JWT.
      this.tokenService.saveJWT(data);

      // Next go back to the api and get the username and save that.
      this.userService.saveUserName();

      // Finally redirect to home page.
      this.router.navigate("home");
    })
    .catch(error => {
      this.tokenService.clearJWT();
    });

您会注意到我现在使用“new”添加标题:

headers: new Headers({ 'content-type': 'application/json' })