我是 React Native 的新手。我使用
react-native init XXX
创建了一个新项目。当启动 xcodeproj 时,我收到一条错误消息:
const setupEnvScript = /^win/.test(process.platform)
^^^^^
SyntaxError: Use of const in strict mode.
at Module._compile (module.js:439:25)
at Module._extensions..js (module.js:474:10)
at Object.require.extensions.(anonymous function) [as .js] (/Users/allanhahaha/Documents/Seat/getseat/SeatApp/node_modules/react-native/node_modules/babel-core/lib/api/register/node.js:214:7)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/allanhahaha/Documents/Seat/getseat/SeatApp/node_modules/react-native/cli.js:15:18)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
根据我的研究,这是一个node.js版本问题:我应该使用v.4.0+。
我正在使用 NVM 来管理我的 Node.js 版本。在常规终端窗口中,我有这个:
$ node --version
v5.1.0
但是在 xcode 中,当它运行启动 shell 脚本时,我看到它使用的是不同的版本,
v0.10.40
,并且 xcode 也不知道 nvm
命令..
问题是,我应该如何配置我的 Mac,以便 xcode 可以选择我使用 nvm 设置的相同版本?
谢谢!
更新:我尝试在xcode执行的shell脚本中
source
我的~/.bash_profile
,但仍然没有解决问题。
当您安装了错误的 Node(以及 npm)版本的react-native-cli 时,似乎会出现此问题。
首先关闭 xcode 并确保没有旧节点进程在运行,我不确定这是否有必要,但最好确保一下:
$ ps -e|grep node
$ kill {process number(s) here}
然后将默认的nvm节点版本设置为您要使用的版本,例如:
$ nvm alias default 6.6.0
然后重新启动终端并确保节点版本现在是您默认想要的版本:
$ node -v
v6.6.0
现在重新安装react-native-cli,新的节点版本处于活动状态(它会影响npm版本):
$ npm install -g react-native-cli
现在运行
$ react-native run-ios
应该使用正确的版本运行xcode! (如果没有,请确保重新启动终端/xcode 并重试)。
我通过将
. ~\.bash_profile
添加到 shell 脚本顶部解决了该问题。
我通过将
. ~/.nvm/nvm.sh
添加到构建阶段中 shell 脚本的顶部来解决
将节点路径添加到构建阶段/捆绑 React Native 代码和图像设置
对我来说,将其添加到
/etc/profile
或 ~/.profile
有效:
export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"
这是必要的原因是因为 XCode 默认使用
/bin/sh
并且它从我指定的文件加载配置文件。
注意:更改
/etc/profile
需要您使用 sudo
。不确定这在 MacOS X 10.15 Catalina 上是否可行,因为我相信无论如何他们都会将系统目录设置为只读。但如果您能够在此处进行设置,这将使其适用于任何安装了 nvm 的用户。
我能够通过更改
[your_project]/ios/.xcode.env.local
文件来指定 Xcode 使用的 React Native 项目节点版本。
.xcode.env.local
文件内容示例:
export NODE_BINARY=/Users/user/.nvm/versions/node/v20.17.0/bin/node