javascript – Axios Promise Handling – 在react-native中获取“可能未处理的Promise Rejection – TypeError:Network request failed”

登录屏幕上的react-native应用程序中,我正在努力在输入错误用户名/密码组合后为用户提供良好的错误消息.要与API交互我正在使用Axios库.但是当我在catch语句中出现错误时,我收到这个丑陋的错误消息,说我有一个“未处理的承诺拒绝”,我不能做诸如设置组件状态或导航到新页面之类的事情.

我看不出我做错了什么,它看起来就像我在文档中看到的那样.

在我的表单提交功能中,我有

axios.post('http://192.168.1.11:1337/login',{
  email: this.state.username,password: this.state.password
}).then(function (response) {

  // This stuff all seems to work great
  console.log("The response we got: ",response);
  if (response.status == 200) {
    console.log("Status code equals 200");
    Actions.homepage();
  }
}).catch(function (err) {

  // Run into big problems when I get an error
  console.log("Got an error logging in,here's the message: ",err);
});

谁能看到我在这里做错了什么?

附:这是我从服务器返回的错误消息,它从该console.log中记录(“登录时出错,这里是消息:”,错误);:

"Got an error logging in,here's the message:"

{ [Error: Request Failed with status code 401]
  config: 
   { transformRequest: { '0': [Function: transformRequest] },transformResponse: { '0': [Function: transformResponse] },headers: 
      { Accept: 'application/json,text/plain,*/*','Content-Type': 'application/json;charset=utf-8' },timeout: 0,xsrfCookieName: 'XSRF-TOKEN',xsrfheaderName: 'X-XSRF-TOKEN',maxContentLength: -1,validateStatus: [Function: validateStatus],method: 'post',url: 'http://192.168.1.11:1337/login',data: '{"email":"zach@homies.io","password":"dddddd"}' },response: 
    { data: { message: 'Invalid password',user: false },status: 401,statusText: undefined,headers: 
     { map: 
        { connection: [ 'keep-alive' ],date: [ 'Thu,31 Aug 2017 23:30:21 GMT' ],'x-powered-by': [ 'Sails <sailsjs.org>' ],vary: [ 'X-HTTP-Method-Override' ],'content-length': [ '52' ],'access-control-allow-credentials': [ '' ],'access-control-allow-origin': [ '' ],etag: [ 'W/"34-Ymi4isRxuJ6jE1EIS+AQag"' ],'access-control-allow-methods': [ '' ],'access-control-allow-headers': [ '' ],'access-control-expose-headers': [ '' ],'content-type': [ 'application/json; charset=utf-8' ] } },config: 
       { transformRequest: { '0': [Function: transformRequest] },headers: 
         { Accept: 'application/json,request: 
        { url: 'http://192.168.1.11:1337/login',credentials: 'omit',headers: 
           { map: 
              { accept: [ 'application/json,*/*' ],'content-type': [ 'application/json;charset=utf-8' ] } },method: 'POST',mode: null,referrer: null,_bodyInit: '{"email":"zach@homies.io","password":"dddddd"}',_bodyText: '{"email":"zach@homies.io",bodyUsed: true } } }

以下是Android模拟器(仿真三星galaxy S7)的截图:

Yellow error bar showing Possible Unhandled Promise Rejection...

解决方法

这个片段没有错.

>您发送请求.
>你得到401 – 未经授权的回复.
> Catch收到错误并记录它.

有趣的部分是为什么你得到那个未处理的承诺拒绝错误.
但是这被抛到其他地方.所以你需要提供更多的代码.

编辑:也许你只需要将你的axios承诺归还给调用函数

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...