react-native運(yùn)行報(bào)錯(cuò):Could not find iPhone X simulator 解決

用react-native開(kāi)發(fā)時(shí),一切準(zhǔn)備就緒了,現(xiàn)在我們運(yùn)行下項(xiàng)目吧。yarn react-native run-ios一下,然后發(fā)現(xiàn)控制臺(tái)(或者終端)居然報(bào)錯(cuò):Could not find iPhone X simulator。當(dāng)你嘗試指定模擬器運(yùn)行試試:react-native run-ios --simulator="iPhone 8",然后發(fā)現(xiàn)還是報(bào)錯(cuò),只不過(guò)報(bào)錯(cuò)換成了Could not find iPhone 8 simulator。這里貼一下曾經(jīng)我看到的Stack Overflow上給出的解決辦法。其實(shí)原因不在這里。
我的react-native版本是:0.57.5
請(qǐng)打開(kāi)文件/node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js,看42行的這個(gè)判斷。其實(shí)我們可以在42行之前加個(gè)打印console.log(version)查看所有的設(shè)備version,然后就會(huì)看到,根本沒(méi)有像42行判斷里面提到的iOS和tvOS開(kāi)始的version。所以這個(gè)for in循環(huán)每次執(zhí)行到這里就跳出去了。

findMatchingSimulator.js

console.log(version)在終端的顯示

這不是它的本意,下面的代碼不執(zhí)行的話就會(huì)根本找不到simulator了,所以就會(huì)一直報(bào)錯(cuò)Could not find iPhone * simulator,所以我們需要改一下它的代碼。
注意,下面是解決辦法了。

解決辦法

新findMatchingSimulator.js

我們只需要注釋掉兩處代碼,然后新增兩處代碼就可以了,其實(shí)就是把他的判斷改變了。
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;
 }

最后:這個(gè)辦法有個(gè)弊端,那就是每次你刪掉node_modules重新安裝依賴后都要這樣改一下,因?yàn)槊看沃匦掳惭b后這些文件還會(huì)重置。但是這個(gè)方法真的管用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容