反应原生 iOS PhaseScriptExecution [CP-User]\Generate\Specs BUILD ERROR

dev*_*1ce 2 node.js npm react-native

我一直在努力解决这个错误,一周前我换到新机器时就发生了这个错误。下面是我的机器配置 -> node、npm、yarn 等:

\n
node --version -> v16.18.1\nwhich node -> /opt/homebrew/opt/node@16/bin/node\nwhich npm -> /opt/homebrew/opt/node@16/bin/npm\nwhich yarn -> /opt/homebrew/bin/yarn\n
Run Code Online (Sandbox Code Playgroud)\n

我也安装了nvm。发生这种情况是否是由于yarn未指向节点安装位置所致?因为目录不同。

\n

然后我尝试使用卸载纱线npm uninstall -g yarn并使用重新安装它npm install -g yarn并进入我的项目,删除节点模块,重新安装 Pod 以及所有内容,但此错误仍然存​​在。

\n

我经历了这些解决方案,但没有一个真正适合我 -> React Native 中的 PhaseScriptExecution [CP-User] 错误

\n

以下是我收到的构建错误:

\n
/bin/sh -c /Users/username/Library/Developer/Xcode/DerivedData/project-bqzfnxmekpsgkmfaztyrfllaudqg/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-46EB2E00047A70.sh\nNode found at: /opt/homebrew/Cellar/node/19.0.1/bin/node\n\n/Users/username/Desktop/project/ios/Pods/../../node_modules/react-native/React/FBReactNativeSpec/../../scripts/react_native_pods_utils/script_phases.sh: line 83: /opt/homebrew/Cellar/node/19.0.1/bin/node: No such file or directory\nCommand PhaseScriptExecution failed with a nonzero exit code\n\n** BUILD FAILED **\n\n\nThe following build commands failed:\n    PhaseScriptExecution [CP-User]\\ Generate\\ Specs /Users/username/Library/Developer/Xcode/DerivedData/project-bqzfnxmekpsgkmfaztyrfllaudqg/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-46EB2E00047A70.sh (in target \'FBReactNativeSpec\' from project \'Pods\')\n(1 failure)\n
Run Code Online (Sandbox Code Playgroud)\n

/.zshrc :-

\n
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home\nexport PATH="/opt/homebrew/bin:$PATH"\nexport ANDROID_SDK_ROOT=$HOME/Library/Android/sdk\nexport ANDROID_HOME=$HOME/Library/Android/sdk\nexport PATH=$PATH:$ANDROID_SDK_ROOT/emulator\nexport PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools\nexport PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin\nexport PATH=$PATH:$ANDROID_SDK_ROOT/ndk/21.4.7075529\nexport PATH="$HOME/.rbenv/bin:$PATH"\neval "$(rbenv init -)"\nexport PATH="/opt/homebrew/opt/node@16/bin:$PATH"\n\nexport NVM_DIR="$HOME/.nvm"\n[ -s "$NVM_DIR/nvm.sh" ] && \\. "$NVM_DIR/nvm.sh"  # This loads nvm\n[ -s "$NVM_DIR/bash_completion" ] && \\. "$NVM_DIR/bash_completion"\n
Run Code Online (Sandbox Code Playgroud)\n

正如我所说,当我yarn install在项目文件夹中执行操作时,由于yarn没有指向节点安装目录,它可能会考虑错误的版本并使用错误的版本下载,因此会出现此错误...

\n

有人可以帮我解决这个问题吗?

\n

提前致谢!

\n

编辑-1

\n

这是我的find-node-for-xcode.shnode_modules/react-native/scripts/

\n
#!/bin/bash\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license found in the\n# LICENSE file in the root directory of this source tree.\n\nset -e\n\n#\xc2\xa0WHY WE NEED THIS:\n# This script is used to find a valid instance of `node` installed in the machine.\n# This script is sourced by other scripts to get access to node.\n# Specifically, it is used by the `react-native-xcode.sh` script, invoked by a\n# post-build phase in Xcode, to build the js files required by React Native.\n#\n# DEPRECATION NOTE:\n# React Native should not make assumptions on your current node environment.\n# This file is deprecated and will be removed in a future release in favor of something\n# node-agnostic and configurable by the developers.\n\n# remove global prefix if it\'s already set\n# the running shell process will choose a node binary and a global package directory breaks version managers\nunset PREFIX\n\n# Support Homebrew on M1\nHOMEBREW_M1_BIN=/opt/homebrew/bin\nif [[ -d $HOMEBREW_M1_BIN && ! $PATH =~ $HOMEBREW_M1_BIN ]]; then\n  export PATH="$HOMEBREW_M1_BIN:$PATH"\nfi\n\n# Define NVM_DIR and source the nvm.sh setup script\n[ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.nvm"\n\n# Source nvm with \'--no-use\' and then `nvm use` to respect .nvmrc\n# See: https://github.com/nvm-sh/nvm/issues/2053\nif [[ -s "$HOME/.nvm/nvm.sh" ]]; then\n  # shellcheck source=/dev/null\n  . "$HOME/.nvm/nvm.sh" --no-use\n  nvm use 2> /dev/null || nvm use default\nelif [[ -x "$(command -v brew)" && -s "$(brew --prefix nvm)/nvm.sh" ]]; then\n  # shellcheck source=/dev/null\n  . "$(brew --prefix nvm)/nvm.sh" --no-use\n  nvm use 2> /dev/null || nvm use default\nfi\n\n# Set up the nodenv node version manager if present\nif [[ -x "$HOME/.nodenv/bin/nodenv" ]]; then\n  eval "$("$HOME/.nodenv/bin/nodenv" init -)"\nelif [[ -x "$(command -v brew)" && -x "$(brew --prefix nodenv)/bin/nodenv" ]]; then\n  eval "$("$(brew --prefix nodenv)/bin/nodenv" init -)"\nfi\n\n# Set up the ndenv of anyenv if preset\nif [[ ! -x node && -d ${HOME}/.anyenv/bin ]]; then\n  export PATH=${HOME}/.anyenv/bin:${PATH}\n  if [[ "$(anyenv envs | grep -c ndenv )" -eq 1 ]]; then\n    eval "$(anyenv init -)"\n  fi\nfi\n\n# Set up asdf-vm if present\nif [[ -f "$HOME/.asdf/asdf.sh" ]]; then\n  # shellcheck source=/dev/null\n  . "$HOME/.asdf/asdf.sh"\nelif [[ -x "$(command -v brew)" && -f "$(brew --prefix asdf)/asdf.sh" ]]; then\n  # shellcheck source=/dev/null\n  . "$(brew --prefix asdf)/asdf.sh"\nfi\n\n# Set up volta if present\nif [[ -x "$HOME/.volta/bin/node" ]]; then\n  export VOLTA_HOME="$HOME/.volta"\n  export PATH="$VOLTA_HOME/bin:$PATH"\nfi\n\n# Set up the fnm node version manager if present\nif [[ -x "$HOME/.fnm/fnm" ]]; then\n  eval "$("$HOME/.fnm/fnm" env)"\nelif [[ -x "$(command -v brew)" && -x "$(brew --prefix fnm)/bin/fnm" ]]; then\n  eval "$("$(brew --prefix fnm)/bin/fnm" env)"\nfi\n
Run Code Online (Sandbox Code Playgroud)\n

编辑2

\n

仍然卡住了,我尝试了以下步骤,但没有成功:

\n
    \n
  1. 完全删除了brew安装的节点,然后安装了nvm,现在当我这样做时which nodewhich npmwhich yarn得到以下输出路径:
  2. \n
\n
/Users/username/.nvm/versions/node/v16.13.2/bin/node\n/Users/username/.nvm/versions/node/v16.13.2/bin/yarn\n/Users/username/.nvm/versions/node/v16.13.2/bin/npm\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 然后我删除了项目的 Xcode 派生数据、项目的节点模块、pod,并重新安装了所有内容,希望新的 nvm 节点能够下载具有正确节点版本的包,但不会出现同样的错误:
  2. \n
\n
/bin/sh -c /Users/username/Library/Developer/Xcode/DerivedData/myapp-bqzfnxmekpsgkmfaztyrfllaudqg/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-46EB2E00047A70.sh\nNode found at: /opt/homebrew/Cellar/node/19.0.1/bin/node\n/Users/username/Desktop/algoguru/algoguru/ios/Pods/../../node_modules/react-native/React/FBReactNativeSpec/../../scripts/react_native_pods_utils/script_phases.sh: line 83: /opt/homebrew/Cellar/node/19.0.1/bin/node: No such file or directory\nCommand PhaseScriptExecution failed with a nonzero exit code\n
Run Code Online (Sandbox Code Playgroud)\n

我不明白这一点Node found at: /opt/homebrew/Cellar/node/19.0.1/bin/node,我已经删除了每个brew安装的节点,然后也尝试导航到相同的路径,但找不到任何路径,但这里错误的是它说否则......

\n

有人可以帮忙吗?真的卡住了!无论我做什么,我似乎都无法摆脱这个错误。

\n

dev*_*1ce 8

我能够解决这个问题,xcode.env.local我的项目ios文件夹中有一个隐藏文件,其中有以下路径:export NODE_BINARY="/opt/homebrew/Cellar/node/19.0.1/bin/node",因此将其更改为我当前的节点路径(使用which node),它开始工作。