Uploaded image for project: 'Apache Cordova'
  1. Apache Cordova
  2. CB-8830

application locks up when run with "cordova serve"

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Invalid
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: cordova-plugin-device
    • Labels:
      None
    • Environment:

      windows 8.1 and OSx
      Cordova 4.3.0

      Description

      When the Device plugin is added to a cordova project and the software is tested using the "cordova serve" option (run a local web server for testing with a browser) the software locks up and fails to start.
      There is an exception in the Device plugin as below
      Exception calling native with command :: Device :: getDeviceInfo ::exception=ReferenceError: 'Windows' is undefined
      This is not supprising as there is no device, it's just serving the app through a web server.
      However the software locks up because the "onCordovaInfoReady" is never fired.
      A simple fix is to modify the device.js file as below
      channel.onCordovaReady.subscribe(function() {
      var callFailed = true; // NEW assume the getInfo fails
      me.getInfo(function(info)

      { callFailed = false; // NEW it's all good //ignoring info.cordova returning from native, we should use value from cordova.version defined in cordova.js //TODO: CB-5105 native implementations should not return info.cordova var buildLabel = cordova.version; me.available = true; me.platform = info.platform; me.version = info.version; me.uuid = info.uuid; me.cordova = buildLabel; me.model = info.model; me.manufacturer = info.manufacturer || 'unknown'; channel.onCordovaInfoReady.fire(); }

      ,function(e)

      { // NEW failure will be handled below utils.alert("[ERROR] Error initializing Cordova: " + e); }

      );
      // new code to stop the system locking up
      if(callFailed)

      { me.available = false; // NEW can't be available as getInfo failed channel.onCordovaInfoReady.fire(); // NEW fire event to allow system to work }

      With this mod inplace the software will work, obviously the device information is invalid.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              jml John Little
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: