Lia*_*ang 11 build node.js ios react-native
我有一个准备好的原型,项目被构建堵塞:
错误:无法找到'node'二进制文件来构建React Native bundle如果您安装了非标准nodejs,请在Xcode中选择您的项目,找到'Build Phases' - 'Bundle React Native code and images'并将NODE_BINARY更改为绝对路径您的节点可执行文件(您可以通过调用终端中的"哪个节点"找到它)
这个反馈对我来说无能为力,我确实有nvm的节点.这是与bash有关的事吗?
提前致谢
小智 44
nvm 用户的解决方案:
在您的构建阶段脚本中,只需添加
# Fix for machines using 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
Run Code Online (Sandbox Code Playgroud)
多于export NODE_BINARY=node。无论您的机器是否使用 nvm,这都会使 Xcode 正常工作。
jos*_*ero 32
注释上的@brunocascio解决方案更简单,侵入性更小,在命令行上创建符号链接到节点:
ln -s $(which node) /usr/local/bin/node
Run Code Online (Sandbox Code Playgroud)
Lia*_*ang 22
我找到了一个 解决方案
首先在shell中找到您当前的节点
which node
Run Code Online (Sandbox Code Playgroud)
然后将您的节点URL复制到
export NODE_BINARY=[your node path]
../node_modules/react-native/packager/react-native-xcode.sh to node_modules/react-native/scripts/react-native-xcode.sh
Run Code Online (Sandbox Code Playgroud)
小智 17
如果您正在开发基于 React Native 的解决方案,并且使用 NVM 进行本地 Node 版本控制,则错误可能是由于此原因造成的。
XCode找不到Node版本,当然XCodefetches the Node in the / usr / local / bin / node directory和NVM将Node存储在另一个目录中,例如Users / $ {my-user} /. Nvm / versions /node/v14.16.0/bin/node
为了工作,为 XCode 创建一个别名以在其默认搜索中查找节点就足够了:
sudo ln -s $(which node) /usr/local/bin/node
Run Code Online (Sandbox Code Playgroud)
小智 17
对于 2022 年偶然发现此问题的任何人,以下是我的情况以及我如何解决它。
react-native --version-> 4.14npx --version-> 6.14.9node --version-> 12.14.1XCode“捆绑 React Native 代码和图像”
export ENTRY_FILE=src/App.tsx
../node_modules/react-native/scripts/react-native-xcode.sh
../node_modules/expo-constants/scripts/get-app-config-ios.sh
../node_modules/expo-updates/scripts/create-manifest-ios.sh
Run Code Online (Sandbox Code Playgroud)
删除该export NODE_BINARY=node行代码。不再需要了。我解决这个问题的方法是阅读在../node_modules/react-native/scripts/react-native-xcode.sh如果你看那里找到的源代码,你会发现 nvm/node 采购已经为你完成了。
小智 14
nvm alias default 14
Run Code Online (Sandbox Code Playgroud)
或者
sudo ln -s "$(which node)" /usr/local/bin/node
Run Code Online (Sandbox Code Playgroud)
这让我的 Xcode 12.4 看到了节点
Gle*_*enn 12
2022 年,默认构建会在 ios/.xcode.env.local 和 ios/.xcode.env 中查找环境自定义。提供的 .xcode.env 有一个启用 nvm 并设置 NODE_BINARY 的示例。
这是在构建阶段 -> 捆绑 React Native 代码和图像中配置的。大约 10/2022 年的 shell 脚本如下所示:
set -e
WITH_ENVIRONMENT="../node_modules/react-native/scripts/xcode/with-environment.sh"
REACT_NATIVE_XCODE="../node_modules/react-native/scripts/react-native-xcode.sh"
/bin/sh -c "$WITH_ENVIRONMENT $REACT_NATIVE_XCODE"
Run Code Online (Sandbox Code Playgroud)
该脚本的输入文件部分有
$(SRCROOT)/.xcode.env.local
$(SRCROOT)/.xcode.env
Run Code Online (Sandbox Code Playgroud)
默认的 .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 看起来像这样:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
export NODE_BINARY=$(command -v node)
Run Code Online (Sandbox Code Playgroud)
最好的解决方案是实际执行ln -s $(which node) /usr/local/bin,这将创建一个从/usr/local/bin/node节点所在位置的“符号链接”,这很重要,因为大多数应用程序都会在此路径上查看节点。您可能不想这样做export NODE_BINARY=[your node path],因为当另一个队友有不同的操作系统或不同的节点安装时(即,一个使用 nvm,另一个使用 homebrew),那么会发生相同的错误,在为生产构建时也会发生。ln -s $(which node) /usr/local/bin所以为了安全就跟着去吧。
| 归档时间: |
|
| 查看次数: |
7903 次 |
| 最近记录: |