React Native - FBReactNativeSpec 命令 PhaseScriptExecution 失败,退出代码非零

es1*_*es1 41 terminal xcode ios react-native apple-m1

我使用的是 MacBook Pro

  • M1芯片
  • MacOS 大苏尔
  • Xcode 版本 13.2.1
  • 节点 v14.17.5

我想按照本教程设置一个名为 AwesomeProject https://reactnative.dev/docs/environment-setup的新 React Native 项目,其中包含 React Native CLI 快速入门部分。

当我尝试通过键入以下内容在终端中运行应用程序时: npx react-native run-ios 我的构建失败并出现以下错误:

PhaseScriptExecution [CP-User]\生成\规格/Users/thomashuber/Library/Developer/Xcode/DerivedData/AwesomeProject-aprperxvqrezbfeyvousbagyesvr/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-5F4C70EF7D90A5A5BDAEB404279F232A.sh (在项目“Pods”的目标“FBReactNativeSpec”中)(1 次失败)

当我尝试在模拟器或 iPhone 设备上的 Xcode 中运行它时,我在FBReactNativeSpec中收到以下错误:

命令 PhaseScriptExecution 失败,退出代码非零

我运行它

/bin/sh -c /Users/thomashuber/Library/Developer/Xcode/DerivedData/AwesomeProject-aprperxvqrezbfeyvousbagyesvr/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-5F4C70EF7D90A5A5BDAEB404279F232A.sh
Run Code Online (Sandbox Code Playgroud)

我重新启动了 MacBook,删除了该项目并再次尝试。我在 Xcode 中清理了该项目,但没有任何帮助。我怀疑这是由于我的 MacBook 的 M1 芯片造成的。

小智 68

对我来说,这个解决方案中的任何一个都有效,因为使用 Xcode 14.2 和 RN0.70.5,文件夹中有以下 2 个文件,其中ios修复节点版本与路径(我不知道从哪个版本以及哪个版本添加此文件):

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

如果您将此文件放在ios文件夹中,只需执行以下操作(带或不带 nvm):

which node
Run Code Online (Sandbox Code Playgroud)

并将补丁放入其中,.xcode.env.local如下所示:

export NODE_BINARY="/Users/Blabla/.nvm/versions/node/v16.14.0/bin/node"
Run Code Online (Sandbox Code Playgroud)

如果此文件不存在,请尝试添加它,也许 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)
Run Code Online (Sandbox Code Playgroud)

里面ios/.xcode.env.local

export NODE_BINARY="/Users/Blabla/.nvm/versions/node/v16.14.0/bin/node"
Run Code Online (Sandbox Code Playgroud)

  • 就像魔术一样! (4认同)

Rus*_*ikh 19

如果您关闭计算机或最近升级了节点或 nvm,则缓存文件夹中的某些内容将被重置并且构建失败。node_modules/react-native/scripts/find-node.shReact Native脚本中与nvm相关的代码。遵循这个建议:/sf/answers/4907306281/对我来说有一个小小的改变。

我的规格:Mac intel 芯片 RN 0.68.2 nvm (0.33.11) && node (v18.3.0) 安装

脚步:

  1. nvm unalias default
  2. nvm alias default node
  3. 在 xcode 中构建...完成

  • nvm 维护者:nvm 绝对不应该受到任何指责。它所做的只是自动化节点自己的安装过程。 (2认同)
  • 这对我很有帮助 - 我取消了默认别名(链接到 nvm 控制的 v18)并重新别名为“系统”。现在*快乐多了! (2认同)

rad*_*122 11

我花了很长时间才弄清楚这一点,我的问题与任何其他答案都无关。

问题是我的项目的完整路径包含一个空白空间,所以转向

/Users/radu/Projects/midi control/ua/UaRemoteControl

进入

/Users/radu/Projects/midi-control/ua/UaRemoteControl

修复了 XCode 中的构建错误。


es1*_*es1 6

我设法通过编辑项目设置来消除 FBReactNativeSpec 错误。

请尝试以下操作:

  1. 在 Xcode 中选择应用程序的项目,然后选择目标。

  2. 在终端中输入以下命令来查找节点安装路径:

which node

这应该给你一条路。就像是:

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

  1. 复制此路径。

  2. 在选定目标的 Xcode 中,单击“构建阶段”并打开Bundle React Native 代码和图像

  3. 代替NODE_BINARY=node。输入您复制的路径,而不是节点,如下所示NODE_BINARY=/Users/thomashuber/.nvm/versions/node/v16.14.0/bin/node

用节点路径替换节点

  • 我的代码空间看起来不像所示的那样,我在其中的任何地方都没有 `export`,只有这些行...`set -e WITH_ENVIRONMENT="../node_modules/react-native/scripts/xcode/with-环境.sh" REACT_NATIVE_XCODE="../node_modules/react-native/scripts/react-native-xcode.sh"` (9认同)
  • 不为我工作。而且我没有使用 nvm (3认同)