用react-native开发时,一切准备就绪了,现在我们运行下项目吧。yarn react-native run-ios一下,然后发现控制台(或者终端)居然报错:Could not find iPhone X simulator。当你尝试指定模拟器运行试试:react-native run-ios --simulator="iPhone 8",然后发现还是报错,只不过报错换成了Could not find iPhone 8 simulator。这里贴一下曾经我看到的Stack Overflow上给出的解决办法。其实原因不在这里。
我的react-native版本是:0.57.5
请打开文件/node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js,看42行的这个判断。其实我们可以在42行之前加个打印console.log(version)查看所有的设备version,然后就会看到,根本没有像42行判断里面提到的iOS和tvOS开始的version。所以这个for in循环每次执行到这里就跳出去了。
console.log(version)在终端的显示
这不是它的本意,下面的代码不执行的话就会根本找不到simulator了,所以就会一直报错Could not find iPhone * simulator,所以我们需要改一下它的代码。
注意,下面是解决办法了。
解决办法
新findMatchingSimulator.js我们只需要注释掉两处代码,然后新增两处代码就可以了,其实就是把他的判断改变了。
42-44行注释掉,改成
if (!version.startsWith('com.apple.CoreSimulator.SimRuntime.iOS') && !version.startsWith('com.apple.CoreSimulator.SimRuntime.tvOS')) {
continue;
}
51-56行注释掉,改成
if (simulator.isAvailable !== true) {
continue;
}
最后:这个办法有个弊端,那就是每次你删掉node_modules重新安装依赖后都要这样改一下,因为每次重新安装后这些文件还会重置。但是这个方法真的管用
网友评论