cordovaandroid模拟器“无法读取属性'取代'未定义的”

刚刚在Windows上安装了最新版本的Apache Cordova(7.0.1),在Android SDK中添加了android平台,当试图运行android模拟器时,它编译了一切正常,但是显示了一个:

无法读取未定义的属性“replace”

没有迹象或任何其他事情追查错误。

  • 我的cordova webview应用程序比在同一部手机上的Android浏览器中慢得多
  • 方向更改时,应用程序崩溃
  • phonegap如何真正起作用?
  • PhoneGap + jQueryMobile:Android后退buttonclosures嵌套列表中的应用程序
  • PhoneGap + JQuery Mobile + Google Maps v3:地图显示左上angular的图块?
  • cordovaAndroid重复使用两个插件的function
  • 将图像文件附加到表单数据 - Cordova / Angular
  • 如何更改cordova子项目使用的java版本
  • 在Ionic框架论坛中find了解决此问题的以下答案:

    将其跟踪到文件/platforms/android/cordova/lib/emulator.js第202行:

    var num = target.split('(API level') 1 .replace(')','');

    将其replace为正则expression式search和提取:

    var num = target.match(/ \ d + /)[0];

    本周发生在我身上。 尝试降级Android平台到6.0.0,直到离子团队解决这个问题。

    命令:

    cordova platform rm Android cordova platform add Android@6.0.0 

    设备信息

    • Windows 10
    • 离子3

    命令

    我使用离子在Windows 10上运行以下命令,并具有相同的问题:

    离子cordova模拟android

    错误

    在terminal中报告了以下错误:

     BUILD SUCCESSFUL Total time: 1.775 secs Built the following apk(s): C:/ionic/quoteapp/platforms/android/build/outputs/apk/android-debug.apk ANDROID_HOME=C:\Users\Arduino2\AppData\Local\Android\sdk JAVA_HOME=C:\Program Files\java\jdk1.8.0_144 Error: Cannot read property 'replace' of undefined 

    固定

    更换:

     var num = target.split('(API level ')1.replace(')', ''); 

     var num = target.match(/\d+/)[0] 

    如上所述,工作。

    离子项目中的文件位于以下目录的离子应用程序文件夹中:/platforms/android/cordova/lib/emulator.js

    我没有拿出这个修复,只是想提供什么命令和错误我帮助别人。

    如果你不想修改emulator.js(Adrian的答案),我可以通过在运行cordova emulate android之前手动启动一个Android虚拟设备来解决这个问题。