Невозможно прочитать свойство 'данные' из неопределенного при успешной регистрации пользователя - PullRequest
0 голосов
/ 31 мая 2019

Я получаю сообщение об ошибке каждый раз, когда пользователь успешно регистрируется,

Необработанный отказ (TypeError): невозможно прочитать свойство 'data' из не определен

отправка ({ тип: GET_ERRORS, полезная нагрузка: err.response.data })

почему он выполняет этот метод catch, если при успешной регистрации пользователя не возникает ошибок?

console.log (err.response) показывает, когда пользователь регистрируется с тем же именем пользователя или адресом электронной почты.

Что я могу делать не так?

authActions.js

export const registerUser = (userData) => dispatch => {

    Axios
      .post('/users/register', userData)
      .then( res => {
        const token = res.data.token;
        console.log(token);
        // pass the token in session
        sessionStorage.setItem("jwtToken", token);
        // set the auth token
        setAuthToken(token);
        // decode the auth token
        const decoded = jwt_decode(token);
        // pass the decoded token
        dispatch(setCurrentUser(decoded))     
        this.props.history.push("/dashboard")
      }).catch( (err) => {

         console.log(err.response)
            dispatch({
                type: GET_ERRORS,
                payload: err.response.data
            })    
    })    
};

редуктор

import {SET_CURRENT_USER } from '../actions/types';
import isEmpty from '../actions/utils/isEmpty';

const initialState = {
    isAuthenticated: false
}


export default  (state = initialState, action) => {
    switch (action.type) {
        case SET_CURRENT_USER:
            return{
                ...state,
                isAuthenticated: !isEmpty(action.payload),
                user:action.payload
            }

        default:
            return state;
    }
}

console.log (Рез)

{
  "data": {
    "message": "user created",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NDEsImlhdCI6MTU1OTI2ODcxNX0.t7xK5VVdOmj2BbExBmOdUrZHwYuyEJgjvUTQq1Mw5qY",
    "auth": true
  },
  "status": 200,
  "statusText": "OK",
  "headers": {
    "content-type": "application/json; charset=utf-8",
    "content-length": "165"
  },
  "config": {
    "transformRequest": {},
    "transformResponse": {},
    "timeout": 0,
    "xsrfCookieName": "XSRF-TOKEN",
    "xsrfHeaderName": "X-XSRF-TOKEN",
    "maxContentLength": -1,
    "headers": {
      "Accept": "application/json",
      "Content-Type": "application/json"
    },
    "method": "post",
    "baseURL": "http://localhost:3000",
    "withCredentials": true,
    "url": "http://localhost:3000/users/register",
    "data": "{\"username\":\"billyssss999\",\"email\":\"j0hnnnysssraddddddin@yahoo.com\",\"password\":\"janeddmdddba\"}"
  },
  "request": {}

1 Ответ

0 голосов
/ 31 мая 2019

Так что, похоже, работает после того, как я удалил это

this.props.history.push("/dashboard")

и перенаправляет на панель мониторинга уже существующим кодом.

Регистрация

....

  componentDidMount() {
        // console.log(this.props.auth);
        if (this.props.auth.isAuthenticated) {
          this.props.history.push("/dashboard");
        }

      }

    componentWillReceiveProps(nextProps) {
        if (nextProps.auth.isAuthenticated) {
          this.props.history.push("/dashboard");
        }
        if (nextProps.errors) {
          this.setState({ errors: nextProps.errors });
        }
    }


    handleChange = (e) => {
        e.preventDefault();
        const {formData} = this.state;
        this.setState({
            formData: {
                ...formData,
                [e.target.name]: e.target.value
            }
        });
    }
    handleSubmit = (e) => {
        e.preventDefault();
        const {formData} = this.state;
        const {username, email, password, passwordConf} = formData;
        this.setState({
            username: this.state.username,
            password: this.state.password,
            passwordConf: this.state.passwordConf,
            email: this.state.email
        });
        const creds = {
            username,
            email,
            password
        }

        console.log(creds);
        if (password === passwordConf) {
            this.props.registerUser(creds, this.props.history);
        } else {
            this.setState({passErr: "Passwords Don't Match"})
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...