xcode使用了错误的node.js版本

时间:2015-12-02 05:16:07

标签: javascript node.js xcode react-native nvm

我是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,但仍未解决问题。

6 个答案:

答案 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和图像设置

Setting

答案 3 :(得分:0)

看到这是Google在搜索此错误时的最佳结果,以下是唯一对我有用的内容。

我必须卸载节点(之前使用节点网站上的pkg安装),卸载nvm并使用Brew重新安装节点。

Link了解更多信息。

答案 4 :(得分:0)

我通过将. ~/.nvm/nvm.sh添加到Build Phases

中的shell脚本顶部来解决

答案 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的任何用户都有效。