VM1661:1 Uncaught (in promise) SyntaxError: Unexpected token s in JSON at position 0

时间:2021-04-25 10:48:29

标签: javascript reactjs express

大家好,我的网站出现错误已经很长时间了,我在整个互联网上搜索了答案,但没有找到任何解决方案,这是我的onsubmit代码

onSubmit = () => {
    fetch("http://localhost:2000/signin", {
      method: "post",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        email: this.state.signinEmail,
        password: this.state.signinPassword,
      }),
    })
      .then((response) => response.json())
      .then(console.log(this.state.signinEmail, this.state.signinPassword))
      .then((data) => console.log(data));
  };

我还检查了网络选项卡的响应,它说成功,但收到此错误不知道如何摆脱它。我也检查了解决方案 写 Accept:application/json 但仍然没有工作的 Stackoverflow,但它给了我“错误的请求”错误 后端代码为:

app.post("/signin", (req, res) => {
  if (
    req.body.email === database.users[0].email &&
    req.body.password === database.users[0].password
  ) {
    res.send("success");
  } else {
    res.status(400).json("error logging in");
  }
});
 

我还通过 Postman 对其进行了测试,它成功运行,没有任何错误。 这是json服务器。 enter image description here

1 个答案:

答案 0 :(得分:1)

当您向服务器发出请求并将响应解析为 JSON,但它不是 JSON 时,就会发生这种情况。

fetch('/url').then(res => res.json())

实际请求工作正常。它得到了回应。但是 res.json() 失败了。

根本原因是服务器返回了 HTML 或其他一些非 JSON 字符串。

您可以尝试将 res.json() 更改为 res.text()

onSubmit = () => {
    fetch("http://localhost:2000/signin", {
      method: "post",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        email: this.state.signinEmail,
        password: this.state.signinPassword,
      }),
    })
      .then((response) => response.text())
      .then((data) => console.log(data));
  };