具有本机反应的 Axios 不返回文档并崩溃应用程序

Posted

技术标签:

【中文标题】具有本机反应的 Axios 不返回文档并崩溃应用程序【英文标题】:Axios with react native not returning document and crashes app 【发布时间】:2020-01-06 06:59:33 【问题描述】:

编辑

好的,所以我的方法很好。出于某种原因,当我将const response = await... 更改为const res = await..(或除“响应”之外的任何其他名称)时,它起作用了。如果这不是内存泄漏,那么我不知道这到底是什么本来可以的。如果有人有任何见解,我将不胜感激。


我正在向我的客户提出请求:

const config =  headers:  "Content-Type": "application/json"  ;

const data = JSON.stringify( postId );

console.log('sending request'); // prints

const response = await axios.post(
  `http://$GATEWAY:5000/api/posts/single`,
  data,
  config
);

console.log("response received"); // never reached

但是request received 永远不会被打印出来。

我的后端路由有这个,

const post = await Post.findById(postId).populate("likes");

console.log(post); // prints post

return res.json(post);

它会适当地找到帖子并将其记录到控制台。我不确定发生了什么事。任何地方都不会打印任何错误,并且应用程序会在一段时间后崩溃。它可能正在等待响应。

还有,当我这样做时

return res.json(null)

我的客户收到响应。但是当我尝试返回 post 或者即使我尝试返回时

return res.json( msg: "Hello World" );

挂了。

此外,我在整个应用程序中执行类似的 axios 请求——它们按预期工作和运行。不知道我在这里做错了什么。

我什至尝试过,

const response = await axios.get(
  `http://$GATEWAY:5000/api/posts/$postId`,
);

但它的行为和失败方式相同。如果我让请求挂起太久,应用就会放弃并崩溃。

另外请注意,我使用的是axios 而不是axios-react-native

【问题讨论】:

【参考方案1】:

您确定是 "http" 不是 "https" 其他尝试:

const url = `$apiBaseUrl/someUrlText/someUrlText/`;
const headers = headers:  "Content-Type": "application/json";
const body = JSON.stringify( postId );
axios
.post(url, body, headers)
.then(res => 
  console.log("request received",res);
)
.catch(err => console.log("TODO: Handle error axios", err));

【讨论】:

你使用了第一个建议还是第二个@MikeK? 第二个建议。但我也刚刚用const reponse = await axios.post(url, body, headers); console.log("request received", reponse.data); 进行了测试,它也能正常工作。我做错了什么?

以上是关于具有本机反应的 Axios 不返回文档并崩溃应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在本机反应中找不到 Firebase crashlytics 崩溃日志?

反应 useState 钩子不使用 axios 调用更新

无法在本机反应中选择任何文档/图像(ANDROID 11)

axios 的网络错误和本机反应

使用 axios 将本机表单数据与其中的对象和文件反应

不变违规:不变违规:尝试从未标记为“本机”的节点获取本机标记 - 反应导航更新导致崩溃