web-dev-qa-db-ja.com

Cordova Android emulator "未定義のプロパティ 'replace'を読み取れません"

WindowsにApache Cordova(7.0.1)の最新バージョンをインストールしたばかりで、Android SDK、Androidプラットフォームを追加し、 Androidエミュレーターはすべて正常にコンパイルしますが、次に表示されます:

未定義のプロパティ 'replace'を読み取れません

エラーをトレースするための指示または他の何かなし。

23
Adrián E

Ionic framework forum で、問題を解決する次の答えが見つかりました。

ファイル/platforms/Android/cordova/lib/emulator.jsの202行目まで追跡しました:

var num = target.split( '(APIレベル') 1 。replace( ')'、 '');

正規表現の検索と抽出に置き換えます。

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

51
Adrián E

今週私と一緒に起こった。 Androidプラットフォームを6.0.0にionicチームがこの問題を解決するまでダウングレードしてください。

コマンド:

cordova platform rm Android
cordova platform add [email protected] 
5
Pv-Viana

Emulator.js(Adrianの答え)を変更したくない場合は、cordova emulate Androidを実行する前にAndroid仮想デバイスを手動で開始することでこの問題を回避できました。

5
Elliott

デバイス情報

  • ウィンドウズ10
  • イオン3

コマンド

Windows 10でionicを使用して次のコマンドを実行しましたが、同じ問題がありました。

イオン性コルドバはAndroidをエミュレートします

エラー

ターミナルで次のエラーが報告されました。

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]

上記のように機能しました。

ionicプロジェクト内のファイルは、次のディレクトリ内のionic appフォルダーにあります:/platforms/Android/cordova/lib/emulator.js

この修正は思いつきませんでしたが、他の人を助けるためにどんなコマンドとエラーを提供したかっただけです。

2
Joshua Wright