【问题标题】:axios not catching erroraxios 没有捕捉到错误
【发布时间】:2018-07-17 19:02:03
【问题描述】:

Axios 未捕获“电子邮件的重复条目”错误。我的 axios 函数在我的动作创建器(redux)中,它将帖子发送到我的快递服务器。这是电话

axios.post(api + '/api/register', { user })
  .then(res => {
      dispatch(success(user));
      dispatch({ type: ADD_USER, payload: res.data.data });
  })
  .catch(error => {
      alert('error');
      // dispatch({ type: ADD_TOAST, payload: error.response.data });
  });

我没有收到警报,也没有响应 (res) ?但是在我的服务器上,我控制台记录错误,显示“错误:重复条目”消息。这是错误所特有的还是我的代码中存在错误?

** 使用 express 文件编辑

router.post('/', function(req, res) {

  let firstname = req.body.user.firstname;
  let lastname = req.body.user.lastname;
  let email = req.body.user.email;
  let username = req.body.user.username;
  let password = req.body.user.password;

  bcrypt.hash(password, 10, function(err, hash) {
    if(err) {
        console.log('Could not hash password: ' + err);
    } else {
        // insert into users with hash then profiles
        database.query('INSERT INTO Users (ID, Firstname, Lastname, Email, Password, CreateDate) VALUES (NULL, ?, ?, ?, ?, CURRENT_TIMESTAMP)', [firstname, lastname, email, hash], function(err, result) {
            if(err) {
                console.log(err);
            } else {
                // get inserted id && insert into profiles
                let userID = result.insertId;

                database.query('INSERT INTO Profiles(ID, UserID, Photo, Bio) VALUES (NULL, ?, NULL, NULL)', [userID], function(err, result) {
                    if(err) {
                        console.log('We could not create your profile' + err);
                    } else {
                        let data = {
                            firstname: firstname,
                            lastname: lastname,
                            email: email,
                            photo: null
                        }

                        res.json({ data });
                    }
                });
            }
        });
    }
  });
});

【问题讨论】:

  • 您的服务器是否抛出了实际错误?还是只是捕获和记录?
  • 由于没有发送代码,它似乎只是在捕获和记录。也许我应该在我的服务器文件中发送一个 .status(500) ?
  • 你能告诉我们一些快递代码吗?
  • 肯定会编辑成问题
  • 那是你的/api/register 端点吗?

标签: express react-redux axios


【解决方案1】:

看来你必须使用

返回

你的 axios 函数中的声明

像这样:

async function register (data) {
  return axios.post(api + '/api/register', data)
  .then(res => {
    dispatch(success(user));
    dispatch({ type: ADD_USER, payload: res.data.data });
  })
  .catch(error => {
    alert('error');
    // dispatch({ type: ADD_TOAST, payload: error.response.data });
  });
}

【讨论】:

    【解决方案2】:

    catch中从console.log(error)修改为console.log(error.response)。

    axios.post('/formulas/create', {
    name: "",
    parts: "" }).then(response => { 
    console.log(response) }) .catch(error => {console.log(error.response)});
    

    【讨论】:

    • 捕获处理程序甚至没有被执行。为什么这可以解决根本问题?
    猜你喜欢
    • 2012-03-31
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2017-06-16
    • 2016-01-26
    • 2014-03-02
    相关资源
    最近更新 更多