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

xcode using wrong node.js version

我是 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 版本。在 常规终端 window 中,我有这个:

$ node --version
v5.1.0

但在 xcode 中 运行 启动 shell 脚本时,我看到它使用了不同的版本,v0.10.40,而 xcode 没有' 也知道 nvm 命令..

问题是,我应该如何配置我的 Mac 以便 xcode 可以选择我用 nvm 设置的相同版本?

谢谢!


更新:我试图在 xcode 执行的 shell 脚本中 source 我的 ~/.bash_profile,但仍然没有解决问题。

我通过将 . ~\.bash_profile 添加到 shell 脚本的顶部解决了这个问题。

当您使用错误的 Node(以及 npm)版本安装 react-native-cli 时,似乎会出现此问题。

首先关闭xcode,让我们确保没有旧节点进程运行ning,我不确定是否有必要,但最好确保:

$ 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 使用正确的版本! (如果没有,请确保重新启动 terminal/xcode 并重试)。

鉴于这是搜索此错误时 Google 中的最高结果,以下是唯一对我有用的结果。

我不得不卸载 node(之前是通过 Node 网站上的 pkg 安装的),卸载 nvm 并使用 Brew 重新安装 node。

Link 获取更多信息。

将您的节点路径添加到构建阶段/捆绑 React Native 代码和图像设置

Setting

我通过将 . ~/.nvm/nvm.sh 添加到构建阶段 shell 脚本的顶部来解决

对我来说,将此添加到 /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 的用户。