为 React Native 项目设置特定的 Node.js 版本

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

我在 Mac 上尝试运行旧的 React Native 项目(版本 0.67)时遇到问题。该问题似乎与 OpenSSL 有关,并且在使用 Node.js 版本 18 时发生,这是我系统上的默认版本。但是,当我使用 nvm 切换到 Node.js 版本 16 时,项目运行没有任何问题。

这是我迄今为止尝试过的:

  1. 我通过运行
    nvm use v16.20.1
    nvm alias default v16.20.1
    使用 nvm 切换到 Node.js 版本 16。这样就成功了 让我可以毫无错误地运行该项目。
  2. 我考虑将该项目的React Native版本升级到 与 Node.js 版本 18 兼容,但过程似乎是 复杂且耗时。

现在,我的机器上有多个项目,其中一些需要 Node.js 18。使用 nvm 在 Node.js 版本之间来回切换变得很麻烦。有没有办法配置这个特定的 React Native 项目在运行时使用 Node.js 版本 16,同时保留我的其他项目使用 Node.js 版本 18?

任何有关如何为 React Native 项目设置特定 Node.js 版本的指导将不胜感激。谢谢!

javascript node.js react-native nvm
4个回答
5
投票

我使用 NVM 来管理许多 React-Native 项目的节点版本。我发现,当从终端启动项目时,metro 将开始使用别名默认节点版本,而不是

nvm use
指定的版本。

因此,在启动特定项目之前,我将确保同时运行这两个项目(例如):

nvm alias default v18.18.0
nvm use v18.18.0

如果我需要换回其他版本,我会做同样的事情:

nvm alias default v16.16.0
nvm use v16.16.0

我使用

nvm list
来验证我的设置是否正确。


0
投票

好消息

好消息是,几乎所有编辑器都允许您将节点版本设置为默认值,并为同一项目运行该版本的 NodeJS,无需第三方软件。

第一个选项

以WebStorm IDE为例: 设置 -> 语言和框架 -> Node.js -> 此设置的节点版本 -> 应用并确定。

第二个选项

scripts: {
   "preinstall": "nvm install 0.12.1",
   "prestart": "nvm use 0.12.1", // <= This will install the correct node version before starting
   "start": "node ./file1.js"
},

0
投票

以下选项可能无关紧要 - 我不是

nvm
用户,因此不知道配置,但您可以 在 .npmrc 文件中设置每个项目的节点版本

其他选项:

Docker(或其他容器系统或虚拟机)是一个很好的解决方案,也是处理生产中特定运行时版本要求的常用方法。

使用 OpenSSL 旧版提供程序也是一种选择,但我不建议长期这样做,因为它将来可能不受支持,并且可能会导致安全问题。

另一种选择是将 Node 本身安装为本地依赖项。您可以通过安装特定版本来使用包 node 来做到这一点。这是一个很棘手的解决方法,但由于从事该工作的人们,它似乎值得信赖。


0
投票

为了在 React Native 项目中使用特定版本的 Node,您可以在 app/build.gradle 文件根级别的 project.ext.react 配置中进行设置,如下所示:

project.ext.react = [
...
 nodeExecutableAndArgs: ['/path/to/your/node'],
...
]

例如,在 Mac 中使用 nvm,您可以使用类似以下内容:

project.ext.react = [
...
 nodeExecutableAndArgs: ['/Users/pablo.bayon/.nvm/versions/node/v16.13.0/bin/node'],
...
]
© www.soinside.com 2019 - 2024. All rights reserved.