React-Native :: WebView ::一些没有明显图案的空白页

时间:2018-09-24 18:50:47

标签: react-native webview android-emulator android-webview react-native-android

[] 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文章进行搜索的结果。到目前为止,还没有一个解决问题的方法。

0 个答案:

没有答案