WebView(react-native-webview)在 Expo SDK36 中获取错误代码 -1

Posted

技术标签:

【中文标题】WebView(react-native-webview)在 Expo SDK36 中获取错误代码 -1【英文标题】:WebView (react-native-webview) getting error code -1 in Expo SDK36 【发布时间】:2020-05-20 15:43:15 【问题描述】:

我的 Expo App 的 WebViewScreen 代码:

import React from 'react';
import  WebView  from 'react-native-webview';

export default WebViewScreen = () => (
    <WebView
        originWhitelist=['*']
        source= uri: 'https://www.google.com' 
    />
);

但是当我运行它时,我得到以下错误:

Encountered an error loading page, Object 
  "canGoBack": false,
  "canGoForward": false,
  "code": -1,
  "description": "net::ERR_CACHE_MISS",
  "loading": false,
  "target": 3,
  "title": "Web page not available",
  "url": "https://www.google.com/",

注意: 我的 android 手机已连接到 wifi,并且我几乎可以在 Expo 应用程序的每个屏幕上使用后端服务器 API,这证实了 可以访问互联网并且我的应用程序有权使用互联网

我的环境: Android 三星手机(Android 版本 5.1.1), EXPO SDK版本为36,react-native-webview版本8.0.6,Expo client app版本2.14.0

PS: 对于react-native-webview,我没有做npm install --save react-native-webview相反,我用expo-cli做了expo install react-native-webview > 版本 3.11.7

PPS:我尝试在手机上通过二维码扫描从here(官方?)运行webview的expo小吃,但得到同样的错误("code": -1)。

有人可以指导如何摆脱此错误并启动并运行 webview 吗?

【问题讨论】:

【参考方案1】:

您是否在清单中设置了正确的权限?

<uses-permission android:name="android.permission.INTERNET"/>

在你的情况下它应该是 App.json 文件

【讨论】:

在 Expo 应用程序中,app.json 不包含任何 &lt;uses-permission ... &gt; 标签,我已阅读有关 Expo 的 app.json here 的官方文档。有趣的是,我在那里发现 “要使用 Expo 支持的所有权限,请不要指定“权限”键。”,我没有。对于某些权限,我在运行时明确要求用户提供相机/位置权限。 另外请注意,我几乎可以在我的 Expo 应用程序的每个屏幕上使用后端服务器 API,这证实了我的应用程序有权使用互联网。【参考方案2】:

您是否尝试过here 发布的临时修复?

他们说网站服务人员可能存在问题(由于 Chrome 75 中的 bug)。

解决方案是将这个 JS 脚本注入到WebView,以取消注册停滞的服务人员:

navigator.serviceWorker.getRegistrations().then(function(registrations) 
    for (let registration of registrations) 
        registration.unregister();
    
);

【讨论】:

以上是关于WebView(react-native-webview)在 Expo SDK36 中获取错误代码 -1的主要内容,如果未能解决你的问题,请参考以下文章

想问开了webview有啥用

electron怎么获取到webview里的元素,webview为加载的网站

webview获取网页点击事件

安卓webview是啥东西

如何监听webview加载完成这个事件

我想问一下开了webview有啥用