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

7uhlpewt  于 2023-10-17  发布在  Node.js
关注(0)|答案(3)|浏览(324)

我在Mac上运行一个旧的React Native项目(版本0.67)时遇到了一个问题。这个问题似乎与OpenSSL有关,并且在使用Node.js版本18时发生,这是我系统上的默认设置。然而,当我使用nvm切换到Node.js版本16时,项目运行没有任何问题。
以下是我到目前为止所尝试的:
1.我使用nvm通过运行nvm use v16.20.1nvm alias default v16.20.1切换到Node.js版本16。这使我能够成功地运行该项目,没有错误。
1.我考虑过升级这个项目的React Native版本以兼容Node.js版本18,但这个过程似乎很复杂而且耗时。
现在,我的机器上有多个项目,其中一些需要Node.js 18。使用nvm在Node.js版本之间来回切换变得越来越麻烦。有没有一种方法可以配置这个特定的React Native项目,在运行它时使用Node.js版本16,同时将我的其他项目保持在Node.js版本18上?
任何关于如何为React Native项目设置特定Node.js版本的指导都将非常感谢。谢谢你,谢谢!

3mpgtkmj

3mpgtkmj1#

好消息

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

第一个选项

以WebStorm IDE为例:Settings -> Languages & Frameworks -> Node.js -> this set node version -> apply and ok.

第二个选项

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"
},
e7arh2l6

e7arh2l62#

下面的选项可能无关紧要-我不是nvm用户,所以不知道配置,但你可以在.npmrc文件中为每个项目设置Node版本。
其他选项:
Docker(或其他容器系统,或VM)是一个很好的解决方案,也是处理生产中特定运行时版本需求的常用方法。
使用OpenSSL遗留提供程序也是一种选择,但我不建议长期这样做,因为将来可能不支持它,并可能导致安全问题。
另一种选择是将Node本身安装为本地依赖项。您可以通过安装特定版本的node软件包来实现这一点。这是一个黑客的变通方法,但由于工作人员的工作,它似乎值得信赖。

z0qdvdin

z0qdvdin3#

我使用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来验证我的设置是否正确。

相关问题