xcode 使用错误的node.js 版本

问题描述 投票:0回答:7

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

javascript node.js xcode react-native nvm
7个回答
17
投票

当您安装了错误的 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 并重试)。


9
投票

我通过将

. ~\.bash_profile
添加到 shell 脚本顶部解决了该问题。


8
投票

我通过将

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


7
投票

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

设置


4
投票

对我来说,将其添加到

/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 的用户。


0
投票

我能够通过更改

[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


-1
投票

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

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

链接了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.