Cordova iOS строит белый экран

Примечание: моя проблема не связана с проблемой заставки.

Итак, в последние несколько дней у меня была головная боль, пытаясь понять, почему мое приложение browserify + react не загружается в веб-представлении iOS, созданном Cordova. Приложение отлично работает на Android, но на iOS после отображения экрана загрузки Cordova оно остается пустым. Похоже, что мой встроенный скрипт (build.js) на самом деле мало что делает. console.log ничего не делает в инспекторе веб-просмотра Safari, и React.render, похоже, не вызывается.

Это мой файл main.js (источник build.js)

var React   = require('react'),
    Router  = require('./components/router');

var $ = require('jquery');

var injectTapEventPlugin = require("react-tap-event-plugin");

var css = require('./node_modules/react-star-rating-input/src/css');

var insertCss = require('insert-css');


console.log("main.js loaded, app not rendered yet");

function onDeviceReady() {

  console.log("App running!");

  //Needed for onTouchTap
  //Can go away when react 1.0 release
  //Check this repo:
  //https://github.com/zilverline/react-tap-event-plugin

  injectTapEventPlugin();

  insertCss(css);

  Router.run(function (Handler) {
    React.render(
      React.createElement(Handler, null),
      document.body
    );
  });
};

onDeviceReady();

$(document).ready(function() {
  document.addEventListener("deviceready", onDeviceReady, false);
}.bind(onDeviceReady));

Обратите внимание, что вызов onDeviceReady предназначен только для тестирования браузера, он будет удален на более позднем этапе.

Я запускаю приложение в симуляторе iPhone 6 (iOS 8.4) и использую Cordova 4.1.2.

Я надеюсь, что кто-то там может мне помочь! Заранее спасибо.


person Tristan Godfrey    schedule 05.08.2015    source источник
comment
используйте удаленный инспектор Safari, чтобы увидеть, получаете ли вы какую-либо ошибку js   -  person jcesarmobile    schedule 06.08.2015


Ответы (1)


Проблема, скорее всего, в вашем определении маршрутизатора. Вы не должны использовать «Router.HistoryLocation» https://github.com/rackt/react-router/issues/310

Попробуйте так без Router.HistoryLocation:

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

person primozs    schedule 29.09.2015