どうも、なかたです。
「COTeggのバケツ」というブログを立ち上げました。
これは技術的なテクニック、問題点や解決方法をバケツに放り込むように
どんどん書いていく目的で作成しました。
バケツいっぱいになるように少しずつ溜めていこうこと思います。
というわけで、今回はionic!
iOSシミュレータで画面が真っ白問題!!
※今回の話は、ionic開発環境が構築されていることが前提です。
アプリを作成する上で、ionicというHTMLハイブリットフレームワークを使用しております。
ブラウザでも簡単にデバッグできので超便利!
ちなみにブラウザでの確認方法は、プロジェクトディレクトリに移動して
$ cd (ionicプロジェクトのディレクトリ)
$ ionic serve
んで、デフォルトポート8100でローカルサーバが起動して、ブラウザで確認できるんですね。
さらに、コマンド一つでシミュレータでも確認できます
$ ionic emulate ios
iosシミュレータが起動して…って感じだったんですが、
ここで問題発生。
シミュレータが真っ白!
なんで?!
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta name="format-detection" content="telephone=no"> <title></title> <link href="lib/ionic/css/ionic.css" rel="stylesheet"> <link href="css/style.css" rel="stylesheet"> <!-- ionic/angularjs js --> <script src="lib/ionic/js/ionic.bundle.js"></script> <!-- moment --> <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script> <!-- angular moment --> <script src="//cdnjs.cloudflare.com/ajax/libs/angular-moment/0.8.2/angular-moment.min.js"></script> <!-- cordova script (this will be a 404 during development) --> <script src="cordova.js"></script> <!-- your app's js --> <script src="js/app.js"></script> <script src="js/controllers.js"></script> <script src="js/services.js"></script> </head> <body ng-app="starter"> <ion-nav-bar class="bar-stable"> <ion-nav-back-button> </ion-nav-back-button> </ion-nav-bar> <ion-nav-view></ion-nav-view> </body> </html>
ionicで自動生成されたindex.htmlにmomentのJSをCDNで取り込んだだけで、なんの変哲もなさそうですが…
事象を整理してみました。
- ブラウザではちゃんと表示される
- シミュレータで表示されない
- momentのCDNを追加した
んで、さらにこういったサイトも参考にしてみました。
ブラウザでデバッグしてみると、どうやらmomentのJS読み込みに失敗してるっぽいですね。
(もうちょっとエラーを強調してほしい。。)
ということは、CDNで記載した部分のプロトコルが、ブラウザでは、http:が補完され
シミュレータでは、file:が補完されたんでは?!と考えたので
こうやってみました。
<!-- moment --> <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script> <!-- angular moment --> <script src="http://cdnjs.cloudflare.com/ajax/libs/angular-moment/0.8.2/angular-moment.min.js">
ちゃんとプロトコル(http:)まで指定する!
すると無事解決。
考えてみるとそうですね。。
小さな経験コツコツと。