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

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

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

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

Solutions Collecting From Web of "cordovaandroid模拟器“无法读取属性'取代'未定义的”"

在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虚拟设备来解决这个问题。