为什么产生auth.js:65未捕获(承诺)TypeError:无法读取未定义的属性“数据”?

时间:2019-08-05 04:38:45

标签: javascript django ecmascript-6 react-redux axios

我正在尝试使用axois和react-redux登录我的Django应用程序。我的问题是,当我输入错误的登录信息时,LOGIN_FAIL操作可以正常工作,但是当输入正确的登录信息时,LOGIN_SUCCESS操作不起作用,并产生以下错误“未捕获(承诺)TypeError:无法读取未定义的属性'data'” 。我很困惑!!我也尝试过使用邮递员登录,并且工作正常。我怎么解决这个问题?谁能解决我的问题? 预先感谢。

这是我的操作代码:

import axios from "axios";
import {
  errorMessage
} from "./messages";
import {
  USER_LOADING,
  USER_LOADED,
  AUTH_ERROR,
  LOGIN_SUCCESS,
  LOGIN_FAIL
} from "./types";

// Login User
export const login = (username, password) => dispatch => {
  // Headers
  const config = {
    headers: {
      "content-type": "application/json"
    }
  }

  // Request body
  const body = JSON.stringify({
    username,
    password
  });

  axios.post("/api/auth/login", body, config)
    .then(res => {
      dispatch({
        action: LOGIN_SUCCESS,
        payload: res.data
      });
    }).catch(err => {
      dispatch(errorMessage(err.response.data, err.response.status));
      dispatch({
        type: LOGIN_FAIL
      });
    });
}

2 个答案:

答案 0 :(得分:1)

将标题“ content-type”更改为“ Content-Type”

// Headers
  const config = {
    headers: {
      "Content-Type": "application/json"
    }

最后在axios内将“操作”更改为“类型”,然后阻止

axios.post("/api/auth/login", body, config)
    .then(res => {
      dispatch({
        type: LOGIN_SUCCESS,
        payload: res.data
      });

仅此而已。

答案 1 :(得分:0)

无需执行JSON.stringify。

const body = {
    username,
    password
};