【问题标题】:React app for cordova shows white screen for androidCordova 的 React 应用程序显示 android 的白屏
【发布时间】:2015-11-20 18:49:33
【问题描述】:

我尝试将 React 应用程序转换为移动应用程序,我在 iOS 上取得了成功,但是现在,当我尝试使用 android 时,它显示白屏死机,并且 chrome 远程检查器没有显示任何内容重要的原因,这是 chrome 日志

这是我的 index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="format-detection" content="telephone=no" />
    <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <title>MMJ Recs</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
    <link rel="stylesheet" href="./css/main.css"/>
    <script>
        window.prompt = function(){

        }
    </script>
</head>
<body>
    <div id="app"></div>
    <script type="text/javascript" src="cordova.js"></script>
    <script src="./js/index.js"></script>
    <script type="text/javascript" src="https://js.stripe.com/v2/"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="./js/vendor.js"></script>
    <script src="./js/vendor.bundle.js"></script>
    <script src="./js/build.js"></script>
    <script type="text/javascript">
      Stripe.setPublishableKey('pk_test_AzADtnJ7sM7pQJu32JOmHB3M');
  </script>
</body>
</html>

这是我的 main.js

import React from 'react';
import Router from 'react-router';
import routes from './routes';
import ReactDOM from 'react-dom';


//ReactDOM.render(routes, document.getElementById('app'));
function startApp(){
    Router.run(routes, Router.HistoryLocation, function(Handler) {
        React.render(<Handler />, document.getElementById('app'));
    });
}

function startAppCordova(){
    Router.run(routes, function(Handler) {
        React.render(<Handler />, document.getElementById('app'));
    });
}


window.onload = function(){
    var url = document.URL;
    var isSmart = (url.indexOf("http://") === -1 && url.indexOf("https://") === -1);
    if( isSmart ){
        document.addEventListener('deviceready', startAppCordova, false);
    }
    else{
        startApp();
    }
}

【问题讨论】:

    标签: android cordova reactjs


    【解决方案1】:

    我怀疑这可能是 JavaScript 引擎的问题,对于具有较旧 JS 引擎的旧手机,您可以使用从 https://cdn.polyfill.io/v2/docs/ 下载的 Polyfill,我用它来解决我在运行 @987654323 时看到的这个错误@我的手机连接并打开了应用程序:

    Uncaught TypeError: Object function Object() { [native code] } has no method 'assign
    

    运行 adb logcat 以查看您遇到的错误,您可能不会从 Chrome 控制台看到它

    【讨论】:

    • 好吧,我已经解决了,我用这个repo作为指导github.com/swennemans/react-cordova-reflux,我没有注意到config.xml有很多来自不同平台的插件,这导致了与android的冲突,无论如何,我真的花了好几个人的时间才弄清楚,谢谢你的时间
    猜你喜欢
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2023-04-04
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    相关资源
    最近更新 更多