J'ai mis à jour Xcode 10 et depuis, je ne peux pas exécuter le simulateur dans le terminal avec la commande react-native run-ios
. Je reçois cette erreur:
Impossible de trouver le simulateur iPhone 6
Quand je vais dans Xcode> Fenêtre> Appareils et simulateur, le simulateur est là et quand je fais xcrun simctl list devices
, Je vois aussi la liste des simulateurs.
Je peux exécuter l'application sur mon téléphone avec react-native run-ios --device
Et à partir de Xcode, et j'ai essayé avec plusieurs applications afin que ce ne soit pas l'application.
Lorsque je vais dans Xcode> Préférences> Emplacements, Xcode 10.0 (10A255) est sélectionné dans Outils de ligne de commande.
J'ai essayé de redémarrer l'ordinateur, ainsi que de supprimer et de réinstaller Xcode.
Des idées ce que cela pourrait être?
Voici ma configuration:
J'ai eu le même problème. React Natif - 0.52.3, XCode - 10.2 bêta 2
function findMatchingSimulator(simulators, simulatorName) {
if (!simulators.devices) {
return null;
}
const devices = simulators.devices;
var match;
for (let version in devices) {
// Making sure the version of the simulator is an iOS (Removes Apple Watch, etc)
if (!version.includes('iOS')) {
continue;
}
[...]
}
}
Ouvrir le fichier: node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
Vérifiez si la version de votre appareil est correcte, par exemple: à la ligne 29 console.log(version)
Comparez-la avec la condition de la ligne 30: if (version.indexOf('iOS') !== 0) {
J'ai eu la liste des versions comme ceci:
com.Apple.CoreSimulator.SimRuntime.watchOS-5-0 -1
com.Apple.CoreSimulator.SimRuntime.tvOS-12-1 -1
com.Apple.CoreSimulator.SimRuntime.tvOS-12-2 -1
Aucune de mes versions ne renvoie true dans cet état ... Si vous en avez un
version.indexOf('iOS') !== 0
par !version.includes('iOS')
et cela résoudra ce problème.Je suis allé à node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
Et j'ai remplacé:
if (version.indexOf('iOS') !== 0 )
avec
if (!version.includes("iOS" ))
Et
if (simulator.availability !== '(available)')
avec
if (simulator.isAvailable !== true)
Le bogue a été corrigé dans react-native
afin que vous puissiez mettre à jour le paquet dans le package.json:
npm install -g npm-check-updates
ncu -u react-native
npm install
Trouvé quelque chose qui a résolu mon problème.
Vous devez aller à local-cli/runIOS/findMatchingSimulator.js
dans le module de nœud réactif et modifiez la ligne 37 pour
if (
simulator.availability !== '(available)' &&
simulator.isAvailable !== 'YES'
) {`
Plus d'informations sur la solution et le problème de github react-native:
https://github.com/facebook/react-native/commit/1031872
https://github.com/facebook/react-native/issues/21571
Je veux juste partager avec vous comment j'ai résolu le problème, peut-être que ça peut aider quelqu'un.
Éditez ce fichier: node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
Changement:
if (!version.startsWith('iOS') && !version.startsWith('tvOS')) {
continue;
}
À:
if (!version.startsWith('com.Apple.CoreSimulator.SimRuntime.iOS')
&& !version.startsWith('com.Apple.CoreSimulator.SimRuntime.tvOS')) {
continue;
}
Cela a fonctionné pour moi.
J'ai utilisé console.log (version) pour voir ce que j'ai obtenu de la variable version et la valeur n'était pas attendue comme elle devrait l'être.
il peut être résolu pour réparer le fichier ci-dessous.
/node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
remplacer cette ligne
if (!version.startsWith('iOS') && !version.startsWith('tvOS')) {
avec
if (!version.includes('iOS') && !version.includes('tvOS')) {
Utilisation de la version native de react 0.55.3
Avec XCode 1 Je devais faire deux modifications pour que react-native run-ios
Soit exécuté.
À l'intérieur de node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
:
Le changement tel que décrit par @ martin-leroux:
Changement
// Skipping non-available simulator
if (simulator.availability !== true) {
à
// Skipping non-available simulator
if (
simulator.availability !== '(available)' &&
simulator.isAvailable !== 'YES'
) {`
Changez la ligne mentionnée par @samernady:
Changement
// Making sure the version of the simulator is an iOS or tvOS (Removes Apple Watch, etc)
if (!version.startsWith('iOS') && !version.startsWith('tvOS')) {
à
// Making sure the version of the simulator is an iOS or tvOS (Removes Apple Watch, etc)
if (!version.includes('iOS') && !version.startsWith('tvOS')) {
Allez à node_modules/react-native/local-cli/runIOS/et dans findMatchingSimulator.js, remplacez la ligne 30 par
if (version.indexOf('com.Apple.CoreSimulator.SimRuntime.iOS') !== 0) {
une option qui a fonctionné pour moi
Liste de contrôle des simulateurs installés sur votre mac en utilisant
xcrun simctl list --json devices
sur la liste du simulateur, choisissez n'importe quel nom de simulateur et lancez comme ceci
react-native run-ios --simulator 'iPhone 6s'
J'espère que cela fonctionne pour toi