我是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
但是在运行start shell脚本的xcode中,我看到它使用了不同的版本v0.10.40
,并且xcode也不知道nvm
命令..
问题是,我应该如何配置我的Mac,以便xcode能够获取我使用nvm设置的相同版本?
谢谢!
更新:我在xcode执行的shell脚本中试图source
~/.bash_profile
,但仍未解决问题。
答案 0 :(得分:12)
当您使用错误的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并重试。)
答案 1 :(得分:5)
我通过将. ~\.bash_profile
添加到shell脚本的顶部来解决了这个问题。
答案 2 :(得分:3)
将您的节点路径添加到Build Phases / Bundle React Native Code和图像设置
答案 3 :(得分:0)
答案 4 :(得分:0)
我通过将. ~/.nvm/nvm.sh
添加到Build Phases
答案 5 :(得分:0)
对我来说,将其添加到/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的任何用户都有效。