Реагировать - Redux |Необработанный отказ (TypeError): невозможно прочитать свойство 'data' из неопределенного - PullRequest
0 голосов
/ 20 октября 2018

Все нормально, пока логин> отправка> полезная нагрузка: err.response.data.Затем выдает ошибку: Unhandled Rejection (TypeError): Невозможно прочитать свойство 'data' из undefined Я проверил много источников, но не могу найти, что не так.В реестре полезная нагрузка: err.response.data работает отлично.Но при входе выдает эту ошибку

import axios from "axios";
import setAuthToken from "../utils/setAuthToken";
import jwt_decode from "jwt-decode";

import { GET_ERRORS, SET_CURRENT_USER } from "./types";

// Register User
export const registerUser = (userData, history) => dispatch => {
  axios
    .post("/api/users/register", userData)
    .then(res => history.push("/login"))
    .catch(err =>
      dispatch({
        type: GET_ERRORS,
        payload: err.response.data
      })
    );
};

// Login - Get User Token
export const loginUser = userData => dispatch => {
  axios
    .post("/api/users/login", userData)
    .then(res => {
      // Save to localStorage
      const { token } = res.data;
      // Set token to ls
      localStorage.setItem("jwtToken", token);
      // Set token to Auth header
      setAuthToken(token);
      // Decode token to get user data
      const decoded = jwt_decode(token);
      // Set current user
      dispatch(setCurrentUser(decoded));
    })
    .catch(err =>
      dispatch({
        type: GET_ERRORS,
        payload: err.response.data
      })
    );
};

// Set logged in user
export const setCurrentUser = decoded => {
  return {
    type: SET_CURRENT_USER,
    payload: decoded
  };
};

// Log user out
export const logoutUser = () => dispatch => {
  // Remove token from localStorage
  localStorage.removeItem("jwtToken");
  // Remove auth header for future requests
  setAuthToken(false);
  // Set current user to {} which will set isAuthenticated to false
  dispatch(setCurrentUser({}));
};

1 Ответ

0 голосов
/ 20 октября 2018

Выглядит нормально, однако я бы попробовал это:

  1. Каждый раз, когда вы запускаете ошибку на сервере, убедитесь, что вы излучаете этот объект:

    response.json({response: {data: "Error..."}})

  2. В противном случае проверьте неопределенный объект в loginUser функция:

    payload: ((err||{}).response||{}).data || 'Error unexpected'

    Это будет проверять ваш вложенный объект, прежде чем вы определилизначения.

    Решение, выбранное из Блог Оливера Стила

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...