最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

无法在本机获取中获取提取错误消息

运维笔记admin8浏览0评论

无法在本机获取中获取提取错误消息

无法在本机获取中获取提取错误消息

我在react-native应用程序上使用fetch将帖子发送到nodejs Web服务器,并且我无法检索回其错误消息。

这是我的本机代码:

make_api_call():Promise<Response>{
  const options:RequestInit = {
        method: 'POST',
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${token}`
        },
        body: JSON.stringify({username: 'user', password: 'pass'})
    };
  return fetch(url, options);
}


login(){
  ...
  from(make_api_call())
    .pipe(
        map( (res) => {
            console.log(res) -- see output below
            const data = res.json(); -- weird hex chars
        })
        , catchError(...)
    )
}

后端的响应:

res.status(500).send({message: 'Bad login.'}).end();
return;

以及我得到的回报:

{ type: 'default',
  status: 500,
  ok: false,
  statusText: undefined,
  headers: 
   { map: 
      { 'access-control-allow-credentials': 'true',
        connection: 'keep-alive',
        'content-type': 'application/json; charset=utf-8',
        'x-powered-by': 'Express',
        'access-control-allow-headers': 'X-Requested-With, Content-Type, Authorization',
        etag: 'W/"22-niDiOYKCTQew5KIlIo6KkEwq7WE"',
        'access-control-allow-origin': '*',
        date: 'yyyy/dd/mm hh:mm:ss',
        'content-length': '34' } },
  url: 'http://server/login',
  _bodyInit: 
   { _data: 
      { size: 34,
        offset: 0,
        blobId: '348BDB26-97F0-4B48-9321-427EF029AAD9',
        type: 'application/json',
        name: 'login',
        __collector: {} } },
  _bodyBlob: 
   { _data: 
      { size: 34,
        offset: 0,
        blobId: '348BDB26-97F0-4B48-9321-427EF029AAD9',
        type: 'application/json',
        name: 'login',
        __collector: {} } } }
回答如下:

res.json()的返回值是一个承诺-参见https://developer.mozilla/en-US/docs/Web/API/Fetch_API/Using_Fetch#Checking_that_the_fetch_was_successful

因此您需要等待res.json()解析。

尝试

res.json().then(data => {
  console.log(data);
});

以确认您正在获取响应数据,然后根据您要如何处理链式承诺来修改代码。

发布评论

评论列表(0)

  1. 暂无评论