【问题标题】:Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0 (React/Redux App)Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0 (React/Redux App)
【发布时间】:2021-02-15 21:06:21
【问题描述】:

我正在尝试使用 JWT 注册/登录用户。为此,我创建了一个可用的 API。

现在,我想在我的 React/Redux 应用中使用该身份验证 API。

当用户注册时,我 dispatch 我的注册组件中的一个操作 -

const signUpHandler = (e) => {
    e.preventDefault();

    dispatch(signup(name, email, password));
  };

现在,在我的 userSlice 中,我有以下减速器 -

signup: (state, action) => {
      fetch("http://localhost:5000/user/signup", {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
        },
        body: JSON.stringify(action.payload),
      })
        .then((res) => {
          return res.json();
        })
        .then((data) => {
          console.log(data);
        });
    },

点击注册后,即; fetch 进程开始后,我收到此错误 -

Uncaught (in promise) SyntaxError: Unexpected token

稍加挖掘后,我发现当fetch的返回类型不是JSON时会出现这个错误。但我的 API 运行良好。

知道可能是什么问题吗?

提前致谢。

【问题讨论】:

  • 检查响应是什么。由于它以&lt; 开头,因此很可能是 HTML,您很可能会收到一个错误页面,该页面将引导您找到问题所在。
  • 在“网络”选项卡中,响应是 HTML,它是一个样板,在

    标记中具有与上述相同的错误

  • 我知道响应是 HTML 但我能做些什么来纠正它?
  • 您可以将signup POST 响应更新为 JSON 格式而不是 HTML。还要检查网络事件响应代码。

标签: javascript node.js reactjs express redux


【解决方案1】:

我刚刚发现了错误,这很愚蠢。这可能会阻止某人犯同样的错误。

发送注册/登录操作时,

而不是dispatch(signup(name, email, password));

做 - dispatch(signup({name, email, password}));

主要错误是 action.payload 不是预期的(即对象)。导致发送到服务器的数据不正确。

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 2017-12-15
    • 2019-08-14
    • 2021-03-02
    • 1970-01-01
    • 2020-03-26
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多