【问题标题】:"device is not defined" when using build.phonegap使用 build.phonegap 时“设备未定义”
【发布时间】:2015-08-17 20:32:57
【问题描述】:

在 phonegap 应用程序中,如果通过 PhoneGap Desktop 运行,则定义设备。但是,如果是通过build.phonegap在线构建的,那么就没有定义了。

在 build.phonegap 中的 plugins 下,它显示了 config.xml 文件中定义的核心插件(例如,)都在那里。但是任何尝试访问设备的线路都会收到“设备未定义”错误,而使用 PhoneGap Desktop 时不会发生此错误。

对于PhoneGap Desktop,我发现秘诀是添加对cordova.js 的脚本引用。但这显然不适用于 build.phonegap。我还尝试添加对 phonegap.js 的类似引用,但没有结果。

PS:另一条信息。为了进一步调试,我尝试使用设备将代码包装在“if”块中,检查设备是否准备好。因此,在 PhoneGap Desktop 上,deviceready 事件被触发,但在 build.phonegap 上,它永远不会准备好。

bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
    app.readyNow = true;
    app.receivedEvent('deviceready');
},

...

if(app.readyNow) {
   //Code to use device object.  Fires with PhoneGap Desktop, not in PhoneGap Build
}

【问题讨论】:

    标签: javascript android cordova phonegap-plugins phonegap-build


    【解决方案1】:

    我通过比较 PhoneGap Desktop 自动生成的 Hello World 应用程序和稍有不同但有问题的应用程序找到了答案。所以答案是将对cordova.js 的脚本引用放在正文中,在HTML 下面,而不是在头部,并确保没有对phonegap.js 的引用。 (如果有 phonegap.js,它会抱怨 NPObject,而如果 cordova.js 在 head 部分,则设备永远不会准备好。)这解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 2016-07-02
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      相关资源
      最近更新 更多