react-native run-ios无法找到任何模拟器

时间:2019-02-03 21:25:40

标签: ios react-native ios-simulator

我一直面临着一个问题,即无论我添加到--simulator参数中的模拟器如何,“ react-native run-ios”都无法启动。 XCode具有“命令行工具”的正确位置

我总是遇到错误: 找不到iPhone X模拟器

Error: Could not find iPhone X simulator
    at resolve (/Users/eric/.../swim/node_modules/react-native/local-cli/runIOS/runIOS.js:149:13)
    at new Promise (<anonymous>)
    at runOnSimulator (/Users/eric/.../swim/node_modules/react-native/local-cli/runIOS/runIOS.js:134:10)
    at Object.runIOS [as func] (/Users/eric/.../swim/node_modules/react-native/local-cli/runIOS/runIOS.js:106:12)
    at Promise.resolve.then (/Users/eric/.../swim/node_modules/react-native/local-cli/cliEntry.js:117:22)

本机信息

>   React Native Environment Info:
>     System:
>       OS: macOS 10.14.2
>       CPU: (12) x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
>       Memory: 6.76 GB / 32.00 GB
>       Shell: 3.2.57 - /bin/bash
>     Binaries:
>       Node: 10.15.0 - /usr/local/bin/node
>       Yarn: 1.13.0 - /usr/local/bin/yarn
>       npm: 6.4.1 - /usr/local/bin/npm
>     SDKs:
>       iOS SDK:
>         Platforms: iOS 12.1, macOS 10.14, tvOS 12.1, watchOS 5.1
>     IDEs:
>       Android Studio: 3.1 AI-173.4819257
>       Xcode: 10.1/10B61 - /usr/bin/xcodebuild
>     npmPackages:
>       react: 16.6.3 => 16.6.3 
>       react-native: 0.57.8 => 0.57.8 
>     npmGlobalPackages:
>       create-react-native-app: 1.0.0
>       react-native-cli: 2.0.1
>       react-native-git-upgrade: 0.2.7

9 个答案:

答案 0 :(得分:19)

我找到了一个临时解决方法:

在以下文件中:

/node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js

...将第42行更改为:

if (!version.startsWith('com.apple.CoreSimulator.SimRuntime.iOS') && !version.startsWith('tvOS')) {

答案 1 :(得分:18)

此问题已修复,但尚未发布。 https://github.com/react-native-community/react-native-cli/pull/274

因此可以暂时解决修复以下文件的问题。

/node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js

更改此行

if (!version.startsWith('iOS') && !version.startsWith('tvOS')) {

if (!version.includes('iOS') && !version.includes('tvOS')) {

不要忘记在重新安装软件包时再次应用此操作。

答案 2 :(得分:1)

只需

npm install

然后它将显示警告,然后使用以下命令对其进行修复

npm audit fix

答案 3 :(得分:1)

我尝试如下

打开Xcode。然后Preferences->在标签中选择Components

然后在列表中安装任何一个(或多个)可用的模拟器。最好是最近的一位。

它解决了这个问题。

答案 4 :(得分:1)

这也是其他临时修复程序。我正在使用Catalina。

我是这个文件:

/node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js

将第42行更改为:

if (!version.includes('iOS') && !version.includes('tvOS')) {

将第52-53行更改为:

simulator.availability !== '(available)' &&
simulator.isAvailable !== 'YES'

收件人:

simulator.isAvailable !== true

由于命令xcrun simctl list --json devices返回的json列表,属性isAvailable为布尔值,没有属性“ availability”。

答案 5 :(得分:0)

从终端机尝试此脚本

sed -i'''s / startsWith / includes / g'node_modules / react-native / local-cli / runIOS / findMatchingSimulator.js

现在运行

react-native run-ios

答案 6 :(得分:0)

只需在node_modules / react-native / local-cli / runIOS / findMatchingSimulator.js中修改find​​MatchingSimulator.js。

首先启动模拟器,然后运行xcrun simctl list --json设备,并使用“ state”:“ Booted”,搜索该设备。

然后在findMatchingSimulator函数的顶部添加:

return {
udid: <uuid from booted device>, // 'BFA2D7D0-AD49-472F-8279-585DDBBF9151'
name: <Name of the booted simulator>, //"iPhone X"
booted: true,
version: "com.apple.CoreSimulator.SimRuntime.iOS-13-1",

}

答案 7 :(得分:0)

我通过替换YourProjectFolder/node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js中的第62行来解决了该问题

此行

if (
        simulator.availability !== '(available)' &&
        simulator.isAvailable !== 'YES'
      ) {

有了这个

if (
      !simulator.isAvailable
   ) {

在某些情况下,可能每个人都有一些不同的解决方案,只需通过放置console.log()来调试findMatchingSimulator.js文件,这样您就会知道为什么它没有检测到模拟器。在我的情况下,xcrun simctl list devices --json命令未提供simulator.availabilitysimulator.isAvailable不是字符串,它是布尔值。 我打印了模拟器列表,该命令通过以下行返回

  console.log(JSON.stringify(simulator.simulatorName));
  console.log(simulator.isAvailable);
  console.log('-------------------------------------------------------------');

运行命令react-native run-ios --simulator="iPhone SE"之后,我在终端中得到了输出,并根据控制台打印结果固定了代码。我的模拟器正在运行。

答案 8 :(得分:0)

如果您不想使用 npm 审核修复来破坏您的应用程序,请尝试使用 npm install --force