所以我试图在 iPhone 11 - 13.2.2 模拟器上运行一个简单的 react-native 应用程序。 我输入npm run ios但我得到了这个。 我使用npm install但仍然没有。 如何修复该错误? 谢谢,西奥。 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
这看起来像是 SO for React 上最常见的问题。 我尝试了各种问题/答案中给出的所有内容。 它要么过时,要么无法正常工作。
这是代码
const Home = () => {
useEffect(() => {
console.log('start');
fetch('https://jsonplaceholder.typicode.com/todos/1', {
method: 'GET',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
}
}).then((response) => response.json()).then((data) => {
console.log('result: ', data);
}).catch((err) => {
console.log('failed', err);
}).finally(() => {
console.log('Any hope?');
});
});
return (<Text>Lets log the API's for now</Text>);
};
上面的代码只记录了在cli中start
或者调试window,没有别的,甚至最终写入的日志都没有。
我正在使用 xcode 12.0 (12A7209),反应 16.13.1,@babel/core 7.12.10。
这不仅仅是 fetch,我已经尝试过使用 http 的其他库来像axios这样的原生反应,没有任何帮助。 他们都倾向于表现相同。
我已经通过在模拟器中打开一个网站来检查浏览器,它有工作互联网。 我尝试替换在线免费提供的 API。
顺便说一句,这是一个裸项目。 我用 expo 尝试了类似的示例,它的行为恰好相同。
谢谢
以防其他人需要它。 我通过添加解决了它
<key>NSAllowsArbitraryLoads</key>
<true/>
到位于项目中 ios 文件夹内的 Info.plist 文件。
于是我改变了
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
和
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
我遇到了这个问题,XMLHttpRequest 从不触发它的回调,如 onload 或 onreadystatechange。 这导致 React-Native 的 Fetch 实现中断(因为它实际上是 XMLHttpRequest 的包装器)。 我从未解决过这个问题,但我通过使用不同的库将 React-Native Global 的 Fetch 原型替换为 react-native-fetch-blob 来解决这个问题。 react-native-fetch-blob 是使用 NativeModules 和更健壮实现的 fetch 长期运行替代品中维护得最好的版本。
所以对于那些在那里搜索的人来说,可能会有各种各样的问题。 某些版本的 Android 要求您声明 clearText(未加密)是否可以通过 Internet 发送。 一些 iOS 版本已经在 SSL 证书问题上出现问题,即使是有效证书也是如此。 这是一个不常见的错误,但 RN 的 fetch 问题记录可以追溯到 2015 年,与本文中的问题类似。 同样,我的解决方案是完全替换 Fetch,并用 react-native-fetch-blob 替换它,它具有 Fetch API 的本机实现。 Metro 中有时还会出现一个问题,如果您关闭 inlineRequires fetch 有时会开始工作。 忘记这一切并替换 fetch。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.