[] EDIT:
在我的Mac上第三次重启时,自发的自修复问题无法通过前两次重启来解决。因此,如果有人遇到此问题,请保持重启状态,直到可以正常使用为止。
对于我们的React-Native应用程序(目前仅在Android Emulator环境下进行测试),所有网站都可以使用仿真设备上的Browser应用程序访问,但是在我们的<WebView />
组件中,只有一些网站可以呈现,并且没有错误消息,直到超时错误(需要一段时间),之后才显示“哦,不!”。和Proxy对象被记录,并带有一个Yellowbox消息。
我对Android(Java)代码没有直接控制权,但是欢迎任何需要更改项目那一侧的潜在解决方案。
当网络A上的页面加载失败时,在React-Native-Debugger
中看到的输出是:
Encountered an error loading page
{
"canGoForward": false,
"code": -2,
"canGoBack": false,
"description": "net::ERR_NAME_NOT_RESOLVED",
"loading": false,
"title": "",
"url": "https://www.stallman.org",
"target": 2
}
这两个“开始!”和“结束!”控制台会启动日志。
在网络B上,黄框永远不会出现,并且“开始!”消息触发,但“结束!”消息,即使等待了整整5分钟也是如此。
* * * 我的直觉(基于对该问题的其他一些看法)是这是与重定向处理不当相关的问题。 * * *
是否有人知道如何解决此问题,以及根源可能是什么?
谢谢。
Android模拟器详细信息:
Name: Nexus_5X_API_23
CPU/ABI: Google APIs Intel Atom (x86_64)
Path: /Users/$USER/.android/avd/Nexus_5X_API_23.avd // $USER = user
Target: google_apis [Google APIs] (API level 23)
Skin: nexus_5x
SD Card: 100M
hw.dPad: no
hw.lcd.height: 1920
runtime.network.speed: full
hw.accelerometer: yes
hw.device.name: Nexus 5X
vm.heapSize: 256
skin.dynamic: yes
hw.device.manufacturer: Google
hw.lcd.width: 1080
hw.gps: yes
hw.initialOrientation: Portrait
image.androidVersion.api: 23
hw.audioInput: yes
image.sysdir.1: system-images/android-23/google_apis/x86_64/
tag.id: google_apis
showDeviceFrame: yes
hw.camera.back: virtualscene
hw.mainKeys: no
AvdId: Nexus_5X_API_23
hw.camera.front: emulated
hw.lcd.density: 420
avd.ini.displayname: Nexus 5X API 23
hw.arc: false
hw.gpu.mode: auto
hw.device.hash2: MD5:bc5032b2a871da511332401af3ac6bb0
hw.ramSize: 1536
hw.trackBall: no
PlayStore.enabled: false
fastboot.forceColdBoot: no
hw.battery: yes
hw.cpu.ncore: 4
hw.sdCard: yes
tag.display: Google APIs
runtime.network.latency: none
hw.keyboard: yes
hw.sensors.proximity: yes
disk.dataPartition.size: 800M
hw.sensors.orientation: yes
avd.ini.encoding: UTF-8
hw.gpu.enabled: yes
项目详细信息:
"dependencies": {
"@types/react-redux": "^6.0.6",
"bind": "^0.1.7",
"deep-freeze": "0.0.1",
"i18next": "^11.6.0",
"prop-types": "^15.6.2",
"react-i18next": "^7.11.0",
"react-redux": "^5.0.7",
"redux": "^4.0.0",
"redux-thunk": "^2.3.0"
},
"peerDependencies": {
"react": "16.0.0",
"react-native": "0.51.0",
"react-native-svg": "^6.4.1",
"react-native-svg-loader": "^0.1.5",
"svgs": "^3.2.1"
},
(已缩减)组件代码:
import * as React from 'react';
import { Component } from 'react';
import { WebViewUriSource } from 'react-native';
import { Text, View, WebView } from 'react-native';
import { WebViewProps } from '../prop-types';
export class WebViewComponent extends Component<WebViewProps, {}> {
public onMessage = (event) => {
console.log(event);
}
public render () {
const jsCode = 'console.log("Hello World!")';
return (
<WebView
source={{ uri: 'https://www.stallman.org' }}
onLoadStart={() => console.log('starting!')}
onLoadEnd={() => console.log('ending!')}
style={{ flex: 1 }}
javaScriptEnabled={true}
mixedContentMode={'always'}
domStorageEnabled={true}
scalesPageToFit={true}
onMessage={this.onMessage}
injectedJavaScript={jsCode}
onError={(x) => console.log('Oh no!', x)}
renderError={() => {
return (
<View style={{ flex: 1 }}>
<Text>
Some Error Happened
</Text>
</View>);
}}
/>
);
}
}
传递给<WebView />
的道具在很大程度上是由于我先前通过文档,Github问题和其他SO文章进行搜索的结果。到目前为止,还没有一个解决问题的方法。