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

 Lala88童鞋_619 发布于 2023-01-02 12:25

我从事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'任务,创建一个www文件夹,包括构建或复制所有需要的文件到应用程序(app.min.css,app.min.js,模板,字体和媒体)文件,图标).

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

我尝试在weinre I 的帮助下调试它,并注意到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', [ '$rootScope','$auth', '$app',
    function($rootScope, $auth, $app) {

        alert('HomeCtrl runs...');


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

    }])

})();

出现的唯一警报是:

app.run()运行...

因此,未出现的警报是:

AppCtrl运行...

MainCtrl运行...

HomeCtrl运行...

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

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

任何的想法 ?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有