在OS X上使用ndenv设置React Native
我遇到了PATH困难在Xcode 7.1中设置一个新的React Native iOS项目。 我正在尝试使用ndenv
来pipe理节点版本,这意味着~/.ndenv/shims
需要在PATH上。 为此,我将PATH设置为用户定义的项目设置,如$PATH:~/.ndenv/shims
。 Xcode设置UI显示正确的扩展PATH值。
然而,由react-native init
生成的项目仍然无法构build。 自定义构build脚本无法findreact-native
:
../node_modules/react-native/packager/react-native-xcode.sh: line 36: react-native: command not found
react-native
正确安装,但在构build输出中的环境variables转储清楚地表明~/.ndenv/shims
不在PATH上。 我的path设置不会出现在生成环境中。 但是,如果我设置了随机的用户定义的设置(例如FOOBAR=baz
),那么在 FOOBAR=baz
环境中就会正确显示。
这个结果加上在构build环境中对PATH的进一步检查清楚地表明,Xcode正在重写PATH的某个地方。
所以按照喜好:
- 如何在Xcode 7中正确追加到PATH中的自定义构build脚本?
- 或者,在构build脚本的PATH上获取ndenv-managed npm模块的最好方法(最简单的方法是什么)?
修改react-native-xcode.sh是不可能的,因为这是外部react-native npm模块的一部分。
更新1
作为一个临时的解决方法,我已经通过自制软件在ndenv上安装并安装了节点。 这使得在/usr/local/bin
上的(显然是硬编码的)Xcodepath上的react-native
成为可能,并且可以运行构build。 我不会提交或接受这个解决scheme,因为它不允许重复控制ndenv所做的节点版本。
问题似乎是react-native-xcode.sh
脚本依赖于PATH中的react-native-cli
软件包。 这个问题在Github的这两个问题上被报告给这个项目:
- https://github.com/facebook/react-native/issues/3974
- https://github.com/facebook/react-native/issues/3948
我期望很快就能实施一个修复程序,因为这对任何使用react-native cli来创build新项目的人来说都是一个主要问题。
这个问题有几个解决方法,但没有一个是完美的。 哪一个会为你工作取决于你的节点/ npm设置:
我自己通过nvm安装节点,只需要在运行export NVM_DIR=~/.nvm source $(brew --prefix nvm)/nvm.sh
之前添加export NVM_DIR=~/.nvm source $(brew --prefix nvm)/nvm.sh
react-native-xcode.sh
。 为了这个工作,你需要在全局安装react-native-cli
。
如果您需要帮助为您的特定设置find解决scheme,请给我一些关于您的节点设置的更多信息。 (或者你可以尝试在上面链接的问题中指出的其他解决scheme之一。)
有同样的问题。 下面的链接中的解决方法正在为我工作。 还没有find永久的解决scheme。
XCode $ PATH与terminal$ PATH不同,它不包括nvm节点的path(〜/ .nvm / versions / …)。 这可以通过将source〜/ .bash_profile添加到react-native-xcode.sh
它看起来像一个修复这是刚刚发布0.14.2版本
https://github.com/facebook/react-native/releases/tag/v0.14.2
当facebook / react-native#5518登陆时,这个问题得到了有效的解决。 react-native-xcode.sh
现在考虑一个NODE_BINARY环境variables,告诉它在构build系统上的哪个地方findnode
。 在您的应用程序的目标下,请参阅构build阶段>捆绑React原生代码和图像,并将shell脚本代码设置为:
export NODE_BINARY=$HOME/.ndenv/shims/node ../node_modules/react-native/packager/react-native-xcode.sh
如果您的node
位于不同的位置,请更改NODE_BINARY的值以适应您的安装。 这里是Xcode 7.1的屏幕截图,以帮助导航: