Javascript 如何解决Android Phonegap应用程序语法错误:解析错误?(空白屏幕问题)

Javascript 如何解决Android Phonegap应用程序语法错误:解析错误?(空白屏幕问题),javascript,android,cordova,dojo,Javascript,Android,Cordova,Dojo,我正在使用对运行在Mac OS X(最新版本)上的android仿真器上执行的应用程序进行远程调试 上下文(最终需要): 我目前使用的AVD(Android虚拟设备)是: 设备:Nexus 4(4.7英寸768 x 1280:xhdpi) 目标:Android 2.3.3-API级别10 Javascript框架: 实际问题: 我试图从远程控制台初始化一个方法(weinre),但一旦我开始调用它,就会得到相应的输出: 第一次方法调用: SyntaxError: Parse error Ty

我正在使用对运行在Mac OS X(最新版本)上的android仿真器上执行的应用程序进行远程调试

上下文(最终需要)

我目前使用的AVD(Android虚拟设备)是:

  • 设备:Nexus 4(4.7英寸768 x 1280:xhdpi)
  • 目标:Android 2.3.3-API级别10

    Javascript框架

实际问题

我试图从远程控制台初始化一个方法(weinre),但一旦我开始调用它,就会得到相应的输出:

第一次方法调用:

SyntaxError: Parse error
TypeError: Result of expression 'lang' [undefined] is not an object.
undefined
// Your device Theme
<script src="{path_to_dojox}/dojox/mobile/deviceTheme.js"></script>

// Loads cordova
<script src="cordova.js"></script>

// Loads DOJO
<script src="{path_to_dojo}/dojo/dojo.js" data-dojo-config="app: {debugApp: 1}, async: true"></script>

// DOJO then uses this require statement to load your built DOJO app
<script>
    require(["contactsApp/contacts"]);
</script>
第二次方法调用:

SyntaxError: Parse error
TypeError: Result of expression 'lang' [undefined] is not an object.
undefined
// Your device Theme
<script src="{path_to_dojox}/dojox/mobile/deviceTheme.js"></script>

// Loads cordova
<script src="cordova.js"></script>

// Loads DOJO
<script src="{path_to_dojo}/dojo/dojo.js" data-dojo-config="app: {debugApp: 1}, async: true"></script>

// DOJO then uses this require statement to load your built DOJO app
<script>
    require(["contactsApp/contacts"]);
</script>
第三个方法调用:

SyntaxError: Parse error
TypeError: Result of expression 'lang' [undefined] is not an object.
undefined
// Your device Theme
<script src="{path_to_dojox}/dojox/mobile/deviceTheme.js"></script>

// Loads cordova
<script src="cordova.js"></script>

// Loads DOJO
<script src="{path_to_dojo}/dojo/dojo.js" data-dojo-config="app: {debugApp: 1}, async: true"></script>

// DOJO then uses this require statement to load your built DOJO app
<script>
    require(["contactsApp/contacts"]);
</script>
从这一点开始,我试图调用的方法总是会给出一个未定义的输出

我知道第一个错误是由于我定义的数组而产生的。即:

var requiredLibraries = ["app/webpage",
            "dojo/_base/window",
            "dojo/dom-construct",
            "dijit/registry",
            "dojo/on",
            "dojox/mobile",
            "dojox/mobile/deviceTheme",
            "dojox/mobile/compat",
            "dojo/domReady!"
        ];
但我根本看不到任何解析错误。事实上,我已经通过了我的代码,它是有效的

我试过其他安卓设备,其他版本,也就是4.4版,但都是徒劳的。每次我都得到同样的结果

注意:仅适用于Android设备/Android模拟器。在桌面浏览器或iOS设备/iOS模拟器上测试应用程序时,我没有任何问题


有什么提示吗?

您首先需要在DOJO常见问题解答中说明这一点:

SyntaxError: Parse error
TypeError: Result of expression 'lang' [undefined] is not an object.
undefined
// Your device Theme
<script src="{path_to_dojox}/dojox/mobile/deviceTheme.js"></script>

// Loads cordova
<script src="cordova.js"></script>

// Loads DOJO
<script src="{path_to_dojo}/dojo/dojo.js" data-dojo-config="app: {debugApp: 1}, async: true"></script>

// DOJO then uses this require statement to load your built DOJO app
<script>
    require(["contactsApp/contacts"]);
</script>
在使用Android设备时,我似乎无法在Android设备上运行Dojo Mobile页面 像PhoneGap这样的图书馆,我做错了什么

Android WebKit浏览器实现中存在一个已知的bug 不允许删除以下划线“\u1”字符开头的文件 从本地文件系统加载(例如,在中使用Dojo Mobile时) 结合PhoneGap创建本机应用程序)。解决方法 问题是要创建文件的生成版本(您需要执行以下操作 这是为了性能)

常见问题:

确认此问题:

SyntaxError: Parse error
TypeError: Result of expression 'lang' [undefined] is not an object.
undefined
// Your device Theme
<script src="{path_to_dojox}/dojox/mobile/deviceTheme.js"></script>

// Loads cordova
<script src="cordova.js"></script>

// Loads DOJO
<script src="{path_to_dojo}/dojo/dojo.js" data-dojo-config="app: {debugApp: 1}, async: true"></script>

// DOJO then uses this require statement to load your built DOJO app
<script>
    require(["contactsApp/contacts"]);
</script>

按照本构建教程创建DOJO应用程序的单个javascript文件构建,该构建将删除以下划线开头的单个javascript文件:

SyntaxError: Parse error
TypeError: Result of expression 'lang' [undefined] is not an object.
undefined
// Your device Theme
<script src="{path_to_dojox}/dojox/mobile/deviceTheme.js"></script>

// Loads cordova
<script src="cordova.js"></script>

// Loads DOJO
<script src="{path_to_dojo}/dojo/dojo.js" data-dojo-config="app: {debugApp: 1}, async: true"></script>

// DOJO then uses this require statement to load your built DOJO app
<script>
    require(["contactsApp/contacts"]);
</script>

假设您可以构建DOJO应用程序,那么您需要遵循以下步骤与Phonegap/Cordova集成:

SyntaxError: Parse error
TypeError: Result of expression 'lang' [undefined] is not an object.
undefined
// Your device Theme
<script src="{path_to_dojox}/dojox/mobile/deviceTheme.js"></script>

// Loads cordova
<script src="cordova.js"></script>

// Loads DOJO
<script src="{path_to_dojo}/dojo/dojo.js" data-dojo-config="app: {debugApp: 1}, async: true"></script>

// DOJO then uses this require statement to load your built DOJO app
<script>
    require(["contactsApp/contacts"]);
</script>

*>强>如果使用Debug Tej.js有问题,请注意在页面中间显示它的PosiGAPP/CordoVix.html文件应该是什么样子:

SyntaxError: Parse error
TypeError: Result of expression 'lang' [undefined] is not an object.
undefined
// Your device Theme
<script src="{path_to_dojox}/dojox/mobile/deviceTheme.js"></script>

// Loads cordova
<script src="cordova.js"></script>

// Loads DOJO
<script src="{path_to_dojo}/dojo/dojo.js" data-dojo-config="app: {debugApp: 1}, async: true"></script>

// DOJO then uses this require statement to load your built DOJO app
<script>
    require(["contactsApp/contacts"]);
</script>
//您的设备主题
//装载科尔多瓦
//装载道场
//DOJO然后使用这个require语句来加载构建的DOJO应用程序
需要([“联系人/联系人]);
帮助@nffdiogosilva在离线前完成这项工作的原始想法:

SyntaxError: Parse error
TypeError: Result of expression 'lang' [undefined] is not an object.
undefined
// Your device Theme
<script src="{path_to_dojox}/dojox/mobile/deviceTheme.js"></script>

// Loads cordova
<script src="cordova.js"></script>

// Loads DOJO
<script src="{path_to_dojo}/dojo/dojo.js" data-dojo-config="app: {debugApp: 1}, async: true"></script>

// DOJO then uses this require statement to load your built DOJO app
<script>
    require(["contactsApp/contacts"]);
</script>
这主要是一个调试问题,您需要隔离移动部件并逐步验证您的假设。请确保您假设有效的更基本的东西没有实际损坏。可能是dojo.js库或dojo应用程序对象的初始实例化?此外,您是否使用任何其他javascript库


在我们的另一个帖子中,我提到了我是如何使用Weinre发现我的Sencha应用程序对象不会加载到Android 2.3上的。Sencha库本身似乎加载正常,但创建我的Sencha应用程序对象的样板调用会挂起一点,然后不加载,我的UI根本不会呈现(白屏!)。我通过做一些增量console.log跟踪以及注释我的一些不同javascript包含,直到问题变得清楚。它在Android 4+上运行良好,但在这种情况下可能是另一个问题。

对不起,只是现在我看到了你的答案。好了,我没有使用任何其他库。我很抱歉使用weinre和我得到的调试是我在问题中展示的。关于DOJO常见问题,我知道,我试图解决它,但我无法创建只需要一个文件的构建版本。这意味着我创建的构建版本仍会有下划线文件夹。但我不确定这个问题是否已经解决。也许你可以帮我创建一个只包含一个文件的构建版本。那太棒了=)你能和我交换电子邮件吗?这会容易得多。@nffdiogosilva我更新了我的答案。基本上你需要按照构建DOJO应用程序的教程进行操作。如果你提供我一个地址,很高兴给你发电子邮件。我已经能够构建一个单独的DOJO应用程序了文件dojo。问题是生成过程给了我一个错误,“单个文件”将保持为空。(即:“//>>builded”)。我正在修复错误。在本例中,错误不止一个。其中大多数是解析错误。新的javascript版本知道如何避免这种情况,但其他一些版本不知道。这可能是我在emulator上运行应用程序时的主要问题之一。您可以检查我的github以查看我的电子邮件:。(不带下划线前缀).但我在清理完代码后会告诉你更多。