在 Xcode env 中编译我的 React-Native 项目时,出现以下构建错误:节点:没有这样的文件或目录
不确定是什么原因造成的? 节点 v8.9.4 React-Native v0.50.4 NPM v5.6.0 我正在使用 nvm
如果你正在使用 nvm
sudo ln -s "$(which node)" /usr/local/bin/node
这会将当前的 nvm 链接到您本地的 usr,下次 Xcode 将找到正确的节点路径和版本
如果您使用
nvm
和 sentry
,这里是此错误的解决方案之一:https://docs.sentry.io/clients/react-native/manual-setup/#using-node-with -nvm
Xcode 从 nvm 查找节点时遇到一些问题,请在引发错误的脚本中尝试此操作:
# Setup nvm and set node
[ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.nvm"
if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
. "$HOME/.nvm/nvm.sh"
elif [[ -x "$(command -v brew)" && -s "$(brew --prefix nvm)/nvm.sh" ]]; then
. "$(brew --prefix nvm)/nvm.sh"
fi
[ -z "$NODE_BINARY" ] && export NODE_BINARY="node"
$NODE_BINARY ../node_modules/@sentry/cli/bin/sentry-cli upload-dsym
就我而言,这与旧的哨兵配置以及我使用 nvm 的事实有关。
以下https://docs.sentry.io/platforms/react-native/manual-setup/manual-setup/
您应该能够执行
ln -s $(which node) /usr/local/bin/node
并修复它
将此添加到失败的脚本顶部(在项目 -> 构建阶段):
. ~/.nvm/nvm.sh
我使用的解决方案记录在此处,是在
/usr/local/bin/node
创建一个调用 nvm 的脚本
#!/usr/bin/env sh
# Use the version of node specified in .nvmrc to run the supplied command
export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && \. "/usr/local/opt/nvm/nvm.sh" # This loads nvm
nvm_rc_version > /dev/null 2> /dev/null
HAS_NVM_RC=$?
if [[ "$HAS_NVM_RC" == "0" ]] ; then
nvm run $*
else
nvm run default $*
fi
exit $?
检查是否存在文件名
ios/.xcode.env.local
,该文件名可能优先于通常设置用于构建 React Native 项目的 ios/.xcode.env
环境变量的 NODE_BINARY
文件:
export NODE_BINARY=$(command -v node)
在我的例子中,有一个
ios/.xcode.env.local
使用 NODE_BINARY
下的临时路径设置 /var/folders/dy/
- 这可以从 Xcode 构建输出中看到。
我使用 Xcode 15.0.1 构建 React Native 0.72.9 项目。
React-rncore
CocoaPods pod 目标由于此(现在无效)路径而失败
显示构建输出
Node found at: /var/folders/dy/bbm86qs502g4h1qx3dhrpyk40000gn/T/yarn--1706023232853-0.9009324729880421/node
然后在下一行失败:
<project-path>/ios/Pods/../../node_modules/react-native/ReactCommon/../scripts/react_native_pods_utils/script_phases.sh: line 34: /var/folders/dy/bbm86qs502g4h1qx3dhrpyk40000gn/T/yarn--1706023232853-0.9009324729880421/node: No such file or directory
我通读了所有其他答案。
就我而言,一切都指向正确的地方。
这是.xcode.env.local:
export NODE_BINARY=/opt/local/bin/node
env node
和 command -v node
在终端中正确解析为 /opt/local/bin/node
,这是有效的,但构建仍然失败,并显示 env: node: No such file or directory
所以我认为
env
当 xcode 调用时无法找到节点,因为包含它的目录不是它的 $PATH
。
所以我在
.xcode.env.local
的末尾添加了以下行并且它起作用了:
export PATH=$PATH:`dirname $NODE_BINARY`