Axios未处理的承诺拒绝

时间:2018-11-01 07:24:45

标签: react-native react-redux axios

我的本​​机应用程序中axios出现问题。 错误消息在此处提供Pic1 Pic2 Actions.start()永远不会运行。

编辑1: 这是完整的代码。 编辑2: 错误消息的图片Pic3 至于结果const res = await ...应该是问题所在。 必须添加更多详细信息,否则我无法更新此问题;)

export const apiPostLogin = (
 accountData
) => async dispatch => {
dispatch(setFetching(true));
try {
  var instance = axios.create({
    baseURL: 'https://api.xxxx.de/',
    timeout: 1000
 });

const res = await axios.post('/api/v1/auth/login', accountData);
Actions.Start();

dispatch(setAuthToken(res.data.token));


  await dispatch(apiGetAccount(res.data.token));
  console.log(res);
} catch (error) {
  console.log(error.response);
  dispatch(setFetching(false));
  if (error.response.status === 401) {
  dispatch(
    setApiResponse({
      apiResponse: true,
      didShowResponse: false,
      apiResponseError: true,
      apiResponseCode: 401,
      apiResponseMessage: 'E-Mail und Passwort stimmen nicht überein'
    })
  );
} else if (error.response.status === 417) {
  dispatch(
    setApiResponse({
      apiResponse: true,
      didShowResponse: false,
      apiResponseError: true,
      apiResponseCode: 417,
      apiResponseMessage: 'Du hast Deine E-Mail noch nicht bestätigt'
    })
  );
} else {
  dispatch(
    setApiResponse({
      apiResponse: true,
      didShowResponse: false,
      apiResponseError: true,
      apiResponseCode: 499,
      apiResponseMessage:
        'Du kannst Dich im Moment nicht bei uns anmelden. Wir befinden   uns im Wartungsmodus'
    })
   );
   }
  }
  };

1 个答案:

答案 0 :(得分:0)

post调用包装在try catch(catch对于处理被拒绝的诺言至关重要)块中。您的网络请求失败。您需要捕获错误/处理承诺拒绝

    try {
        const res = await axios.post('/api/v1/auth/login', accountData);
        console.log('Success!');
        console.log(res.status);
        console.log(res.data);
    } catch (e) {
        console.error('Failure!');
        console.error(e.response.status);
        throw new Error(e);
    }
    Actions.Start();

或 尝试使用axios()代替axios.create()

return axios.({
    method: 'post',
    baseURL: userEndpoint,
    headers: {
        common: {
            Accept: 'application/json',
        }
    }
}).then(...).catch(...);