web-dev-qa-db-fra.com

Cordova Android "ne peut pas lire la propriété 'remplacer' d'un indéfini"

Je viens d'installer la dernière version d'Apache Cordova (7.0.1) sur Windows, le SDK Android, ajouté la plate-forme Android Android, et lorsque vous essayez d'exécuter le Android il compile tout ok mais affiche ensuite un:

Impossible de lire la propriété "remplacer" de non défini

Sans indication ni rien d'autre pour retracer l'erreur.

23
Adrián E

Dans le forum du cadre ionique a trouvé la réponse suivante qui a résolu le problème:

Je l'ai retrouvé dans le fichier /platforms/Android/cordova/lib/emulator.js ligne 202:

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

Remplacez-le par une recherche et une extraction d'expression régulière:

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

51
Adrián E

C'est arrivé avec moi cette semaine. Essayez de rétrograder Android vers 6.0.0 jusqu'à ionic résout ce problème).

Commandes:

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

Si vous préférez ne pas modifier emulator.js (réponse d'Adrian), j'ai pu contourner ce problème en démarrant manuellement un appareil virtuel Android avant d'exécuter cordova emulate Android.

5
Elliott

Informations sur l'appareil

  • Windows 10
  • Ionic 3

Commande

J'ai exécuté la commande suivante sur Windows 10 en utilisant ionic et j'ai eu le même problème:

cordova ionique émule Android

Erreur

L'erreur suivante a été signalée dans le 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

Fix

Le remplacement de:

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

avec

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

comme indiqué ci-dessus a fonctionné.

Le fichier dans un projet ionic se trouve dans votre dossier d'application ionic dans le répertoire suivant: /platforms/Android/cordova/lib/emulator.js

Je n'ai pas trouvé ce correctif, je voulais juste fournir la commande et l'erreur que j'ai reçues pour aider les autres.

2
Joshua Wright