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

Error when running simulate with --target parameter on non-US windows 10

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: cordova-serve@2.0.1
    • Fix Version/s: None
    • Component/s: cordova-serve
    • Labels:
    • Environment:
      • Windows 10 German Version 1703
      • cordova@8.0.0
      • cordova-simulate@0.4.0
      • cordova-serve@2.0.1

      Description

      When running cordova simulate with a specific browser, e.g.

       simulate android --target=chrome
      

      the simulation does not start but instead throws an error:

      C:\Users\pk\AppData\Roaming\npm\node_modules\cordova-simulate\node_modules\cordova-serve\src\browser.js:224
                          if (fs.existsSync(trimRegPath(result[2]))) {
                                                              ^
      
      TypeError: Cannot read property '2' of null
          at C:\Users\pk\AppData\Roaming\npm\node_modules\cordova-simulate\node_modules\cordova-serve\src\browser.js:224:57
          at ChildProcess.exithandler (child_process.js:267:7)
          at emitTwo (events.js:126:13)
          at ChildProcess.emit (events.js:214:7)
          at maybeClose (internal/child_process.js:925:16)
          at Socket.stream.socket.on (internal/child_process.js:346:11)
          at emitOne (events.js:116:13)
          at Socket.emit (events.js:211:7)
          at Pipe._handle.close [as _onclose] (net.js:557:12)
      

      Reason is a language-dependent result from reg.exe when querying the path/to/browser in the regex line 201 in browser.js.The output from reg.exe for chrome (parameter stdout) is in my configuration:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.EXE
          (Standard)    REG_SZ    C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
      

      But the code expects (Note (Standard) vs. (Default)) :

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.EXE
          (Default)    REG_SZ    C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
      

      To fix, i would suggest changing the regex in

      https://github.com/apache/cordova-serve/blob/1667227ce3706cc0a27c065a300bce083c3799ee/src/browser.js#L201

      from

      var regItemPattern = /\s*\(Default\)\s+(REG_SZ)\s+([^\s].*)\s*/;
      

      to

      var regItemPattern = /\s*\(.*\)\s+(REG_SZ)\s+([^\s].*)\s*/;
      

      to match most translations.

      Regards

      Peter

       

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              pklaes Peter Kläs
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 20m
                20m