Не удается прочитать свойство 'status' из неопределенного - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь перенаправить пользователя на конкретный маршрут, если он не вошел в систему и не авторизован для обновления пользователя (401) и получил это «Не удается прочитать свойство« статус »неопределенного», тогда как он отлично работал для отображения контактов,Но для обновления пользователя это не так.Это создатель функции Action в файле Index.js папки Action.Также хочу отметить, что новый пользователь обновляется в БД просто отлично.спасибо

export const updateUser = user => {
  return async dispatch => {
    try {
      const response = axios.patch(`${backend_URL}/users/me/edit`, user);
      const newUser = {
        ...JSON.parse(localStorage.getItem("user")),
        ...response.data.req.user
      };
      localStorage.setItem("user", JSON.stringify(newUser));
      dispatch({ type: "UPDATE_USER", payload: response.data.req.user });
      history.push("/users/me");
    } catch (err) {
      if (err.response.status === 401) {
        dispatch({
          type: "SET_ALERT",
          payload: { msg: err.response.data.error, type: "danger" }
        });
        history.push("/users/login");
      } else {
        dispatch({
          type: "SET_ALERT",
          payload: { msg: err.response.data.error, type: "danger" }
        });
      }
    }
  };
};

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

У объекта err нет свойства, называемого response.Вместо этого вы должны использовать допустимые свойства, такие как name или message :

Не думаю, что вы можете получить статус ошибки, поэтому получите его по имени.

export const updateUser = user => {
  return async dispatch => {
    try {
      const response = axios.patch(`${backend_URL}/users/me/edit`, user);
      const newUser = {
        ...JSON.parse(localStorage.getItem("user")),
        ...response.data.req.user
      };
      localStorage.setItem("user", JSON.stringify(newUser));
      dispatch({ type: "UPDATE_USER", payload: response.data.req.user });
      history.push("/users/me");
    } catch (err) {
      if (err.name === "ReferenceError") {
        dispatch({
          type: "SET_ALERT",
          payload: { msg: err.message, type: "danger" }
        });
        history.push("/users/login");
      } else {
        dispatch({
          type: "SET_ALERT",
          payload: { msg: err.message, type: "danger" }
        });
      }
    }
  };
};

Посмотрите документацию об ошибках:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error

0 голосов
/ 07 июля 2019

axios.patch вернуть обещание. Так что надо с этим справиться. Вы можете использовать await axios.patch для обещания ручки.

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