簡體   English   中英

React Native - FBReactNativeSpec 命令 PhaseScriptExecution 失敗,退出代碼非零

[英]React Native - FBReactNativeSpec Command PhaseScriptExecution failed with a nonzero exit code

我正在使用 MacBook Pro

  • M1芯片
  • MacOS 大蘇爾
  • Xcode 版本 13.2.1
  • 節點 v14.17.5

我想按照本教程設置一個名為 AwesomeProject 的新 React Native 項目https://reactnative.dev/docs/environment-setup React Native CLI Quickstart 部分。

當我嘗試通過鍵入以下命令在終端中運行應用程序時: npx react-native run-ios 我的構建失敗並出現以下錯誤:

PhaseScriptExecution [CP-用戶]\ Generate\ Specs /Users/thomashuber/Library/Developer/Xcode/DerivedData/AwesomeProject-aprperxvqrezbfeyvousbagyesvr/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-5F4C70EF7D90A5A5BDAEB4324279 (在項目“Pods”的目標“FBReactNativeSpec”中)(1 次失敗)

當我嘗試在模擬器或 iPhone 設備上的 Xcode 中運行它時,我在FBReactNativeSpec中收到以下錯誤:

/bin/sh -c /Users/thomashuber/Library/Developer/Xcode/DerivedData/AwesomeProject-aprperxvqrezbfeyvousbagyesvr/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-5F4C70EF7D90A5A5BDAEB404279F232A.sh

命令 PhaseScriptExecution 失敗,退出代碼非零

我重新啟動了我的 MacBook,我刪除了項目並再次嘗試。 我在 Xcode 中清理了項目,但沒有任何幫助。 我懷疑這是因為我的 MacBook 的 M1 芯片。

通過編輯項目設置,我設法擺脫了 FBReactNativeSpec 錯誤。

嘗試以下操作:

  1. 在 Xcode select 你的應用程序的項目,然后 select 目標。

  2. 在終端中輸入以下命令以找出節點安裝的路徑:

which node

這應該給你一個路徑。 就像是:

/Users/thomashuber/.nvm/versions/node/v16.14.0/bin/node

  1. 復制此路徑。

  2. 在 Xcode 中,選擇目標,單擊Build Phases並打開Bundle React Native 代碼和圖像

  3. 替換NODE_BINARY=node 代替 node 輸入您復制的路徑,使其類似於NODE_BINARY=/Users/thomashuber/.nvm/versions/node/v16.14.0/bin/node

用節點路徑替換節點

對我來說,這個解決方案中的任何一個都有效,因為在 Xcode 14.2 和 RN0.70.5 中, ios文件夾中有以下 2 個文件,它們用路徑固定了節點版本(我不知道從哪個版本開始,哪個版本添加了這個文件):

  1. .xcode.env
  2. .xcode.env.local

如果你是ios文件夾中的這個文件,只需執行此操作(有或沒有 nvm):

which node

並將補丁放入.xcode.env.local ,如下所示:

export NODE_BINARY="/Users/Blabla/.nvm/versions/node/v16.14.0/bin/node"

如果這個文件不存在,嘗試添加它,也許 Xcode 會考慮到它:

ios/.xcode.env里面

# This `.xcode.env` file is versioned and is used to source the environment
# used when running script phases inside Xcode.
# To customize your local environment, you can create an `.xcode.env.local`
# file that is not versioned.

# NODE_BINARY variable contains the PATH to the node executable.
#
# Customize the NODE_BINARY variable here.
# For example, to use nvm with brew, add the following line
# . "$(brew --prefix nvm)/nvm.sh" --no-use
export NODE_BINARY=$(command -v node)

ios/.xcode.env.local里面

export NODE_BINARY="/Users/Blabla/.nvm/versions/node/v16.14.0/bin/node"

似乎 nvm 擾亂了構建過程,如果您關閉計算機或最近升級到 node 或 nvm,緩存文件夾中的某些內容將被重置並且構建失敗。 Nvm 是罪魁禍首,並且在與 nvm 相關的 react native node_modules/react-native/scripts/find-node.sh腳本中圍繞它的代碼。 遵循此建議: https://stackoverflow.com/a/70104375/5927929對我有用,只需稍作改動。

我的規格:安裝 Mac 英特爾芯片 RN 0.68.2 nvm (0.33.11) && node (v18.3.0)

腳步:

  1. nvm unalias default
  2. nvm alias default node
  3. 內置 xcode...完成

只需從 Pod 中刪除 FBReactNativeSpec 文件,如下圖所示。 在此處輸入圖像描述

好的,值得一試。

2種不同的解決方案:

1:一旦我們收到此錯誤消息:

如果寫入該日志文件,請始終向上滾動並閱讀問題。 任何問題,如語法錯誤或與您的 js 代碼相關的問題(如 js 文件中的多個導入,或者您忘記導入某些內容)。 如果是,您可以先修復它並重新構建它。

就我而言,我多次導入其中一個 RN 組件。

如果不

2:在你的mac中進入'鑰匙串訪問',鎖定和解鎖登錄並重新構建它,這可能會對你有所幫助。

如果您在安裝任何 npm package 后忘記執行此操作,請確保“cd ios”&&“pod install”。

  1. 確定您的節點二進制文件是什么:

    $ 哪個節點 /opt/homebrew/bin/node

  2. 在 Podfile 中添加修復程序 function:

    def fix_fb_react_native_spec(installer) installer.pods_project.targets.each 做 |target| if target.name == 'FBReactNativeSpec' target.build_configurations.each 做 |config| 如果 config.name == 'Debug' 或 config.name == 'Release' config.build_settings['NODE_BINARY'] = '/opt/homebrew/bin/node' end end end end end

  3. 在您的安裝后,像這樣添加 fix_fb_react_native_spec(installer):

    post_install 做 |安裝程序| react_native_post_install(installer) fix_fb_react_native_spec(installer) end

  4. 吊艙安裝

  5. 重建(最好是干凈的構建)

在我的情況下,由於節點路徑而引發的此錯誤未在 PATH 變量中設置。 嘗試運行以下命令,它將在 PATH 變量中設置缺少的節點路徑並解決錯誤。

sudo ln -s $(哪個節點) /usr/local/bin/node

https://reactnative.dev/docs/new-architecture-troubleshooting#:~:text=Command%20PhaseScriptExecution%20failed%20with%20a,libraries%20(FBReactNativeSpec%2C%20rncore)

就我而言:

  • M1芯片
  • macOS 蒙特雷
  • Xcode 版本 13.2.1
  • 節點 v16.6.0
  • react-native 0.69

我試圖通過 Rossetta 下的終端構建 iOS 應用程序。 一旦我嘗試使用本機 M1 終端 - 它運行良好。

Go 到您的應用程序,右鍵單擊應用程序,獲取信息,檢查關閉Open using Rossetta

在此處輸入圖像描述

萬一其他人嘗試了此處和其他線程中提到的所有內容,但沒有用,這對我有用!

[:] CocoaPods 找不到 pod“hermes-engine”的兼容版本。 在快照中 (Podfile:lock): hermes-engine (from ../node_modules/react-native/sdks/hermes/hermes-engine.podspec ) 在 Podfile: hermes-engine (from ../node_modules/react-native/sdks/hermes/hermes-engine.podspec ) 看來您已經更改了依賴hermes-engine的版本,它與存儲在Pods/Local Podspecs中的版本不同。 您應該運行pod update hermes-engine --no-repo-update以應用本地所做的更改。

但是我沒有運行他們給我的命令,而是刪除了Podfile.lock和 Pods 目錄,然后重新運行pod install ,構建終於成功了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM