angularjs – 如何调试我的离子/角度/ phonegap / cordova应用程序的白屏?

前端之家收集整理的这篇文章主要介绍了angularjs – 如何调试我的离子/角度/ phonegap / cordova应用程序的白屏?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 Ionic项目( AngularJS Apache Cordova又名Phonegap)上工作.

我的项目的第一个代码行是4个月,而昨天,应用程序不再适用于模拟器和真实设备,但仍然适用于chrome窗口.所以我想我的角度代码是正确的,但我不知道问题在哪里,我不知道如何处理它.

一开始我直接在我的www文件夹中编码,我测试它是使用devtools和设备仿真的chrome,或者使用Apache Ripple扩展的chrome,有时我将它安装到我的真实设备(Nexus S)中.

我最近在我的项目中安装了grunt和bower用于常见任务,我决定重新组织我的项目文件夹.

然后,我现在编码到一个src文件夹,并:

>在使用chrome进行测试之前,我运行grunt’dev’任务,创建一个www文件夹,并包含一个链接到scr / js,html,css和其他res文件的专用index.html.
>在模拟器或真实设备中测试之前,我运行grunt’prod’任务,包括构建或复制所有需要的文件到应用程序(app.min.css,app.min.js,模板,字体和媒体文件,图标).

它们都可以在chrome中正常工作,但是当我构建(通过cordova-cli或phonegap build)并在模拟器或真实设备上安装应用程序时,我会获得启动画面,然后是永久白屏.

我尝试在weinre的帮助下调试它,并注意到js控制台没有捕获任何抛出的错误.
但是我放置了一些console.log,看起来路由已经坏了.

angular.module(‘app’).执行run(),但永远不会执行第一个AppCtrl控制器.

这是我的模块代码(这篇文章的重要部分):

(function(){ 

    angular.module('app',[
        'ionic','ngCordova','app.auth','app.model','app.action',// 'app.test',])

    .run(['$ionicPlatform',function($ionicPlatform) {

        alert("app.run()  runs ...");

    }])

    .config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider) {

        var tmplt_dir = 'modules/app/tmplt';
        var tmplt = function(viewName){
            return tmplt_dir + '/' + viewName + '.html' ;
        };

        $stateProvider

            .state('app',{
                url: "/app",abstract: true,templateUrl: tmplt('app'),controller: 'AppCtrl'
            })    
            .state('app.main',{
                url: "/main",abstract: false,views: {
                    "menuContent" : {
                        templateUrl:  tmplt('main'),controller: 'MainCtrl'
                    }
                }
            })
            .state('app.main.home',{
                url: "/home",views: {
                    'hoMetabContent' :{
                        templateUrl: tmplt('home'),controller: 'HomeCtrl'
                    }
                }
            });

        // if none of the above states are matched,use this as the fallback
        $urlRouterProvider.otherwise('/app/main/home');  
    }])

    .controller('AppCtrl',[ '$rootScope','$cordovaToast','$window',function($rootScope,$cordovaToast,$window) {

        alert('AppCtrl runs...');

        $rootScope.notImplementedException = function(){
            var message = "Bientôt disponible.";
            try {
                $cordovaToast.showShortCenter(message);
            } catch(e){
                alert(message);
            }
        };
        $rootScope.browserOpen = function(href){
            var ref = $window.open(href,'_system','location=yes');
        };

    }])
    .controller('MainCtrl',[ function() {

        alert('MainCtrl runs...');


    }])    
    .controller('HomeCtrl','$auth','$app',$auth,$app) {

        alert('HomeCtrl runs...');


        if (!$auth.checkLogin()) {
            $auth.authError();
        }
        $rootScope.appName = $app.name;

    }])

})();

出现的唯一警报是:

> app.run()运行…

因此,未出现的警报是:

> AppCtrl运行…
> MainCtrl运行…
> HomeCtrl运行…

请记住,在chrome中,一切都完美无缺!

这个问题真是令人费解,我已经失去了几个小时来跟踪它,但没有成功.

任何的想法 ?

解决了我的问题.

实际上,我写了一个httpRequestInterceptor工厂,它检查是否必须签署一个url才能使用我的Rest API.

最近我的项目文件夹的结构发生了变化,导致这个工厂有时会返回错误的结果,然后签署一些本地URL并导致错误的路由,然后是白屏.

原文链接:https://www.f2er.com/angularjs/240541.html

猜你在找的Angularjs相关文章