web-dev-qa-db-fra.com

Impossible de trouver le simulateur iPhone 6 après la mise à niveau vers Xcode 10

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:

  • MacOs High Sierra 10.13.6
  • Xcode version 10.0
  • react-native-cli: 2.0.1
  • react-native: 0.57.1
15
Martin Leroux

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

  • Remplacez version.indexOf('iOS') !== 0 par !version.includes('iOS') et cela résoudra ce problème.
18
Damian

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)

12
samernady

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
10
Danny Sullivan

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

8
Martin Leroux

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.

4
R. Calhau

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')) {
3
Padam Prajapati

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:

  1. 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'
    ) {`
    
  2. 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')) {
    
2
Andru

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) {
0
Robert Alvarez

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

0
krishnazden