大家在开发过程中是如何管理多个项目不同的 NodeJS 版本的?

2023-10-25 13:47:33 +08:00
 fancy2020

本地会开发多个不同的 NodeJS 项目,每个项目可能需要的 Node 版本不同,有的老项目还在用 10.xx ,有的要求 12.xx/14.xx/16.xx/18.xx 。

总之,每个项目都需要不同的 Node 版本。很多时候我都是在启动项目遇到报错了才会意识到要切换 Node 版本。

7455 次点击
所在节点    Node.js
94 条回复
tog
2023-10-25 13:49:05 +08:00
nvm 了解下,百度不会吗 兄弟
Ally
2023-10-25 13:49:51 +08:00
fnm
ljtfdt
2023-10-25 13:50:32 +08:00
nvm ?
jackytang520
2023-10-25 13:50:49 +08:00
我用 asdf
lisongeee
2023-10-25 13:51:16 +08:00
volta
hsuyeung
2023-10-25 13:51:24 +08:00
nvm
sleepm
2023-10-25 13:58:00 +08:00
devenv
sparkinglemon
2023-10-25 14:00:37 +08:00
fnm
stinkytofu
2023-10-25 14:02:32 +08:00
nvm 肯定是要用的, 还可以配合 conda 定制各种不同的环境, 不同项目必须要隔离开来, 否则真的是头大
s1mpleOf
2023-10-25 14:04:49 +08:00
volta
Comyn
2023-10-25 14:05:06 +08:00
nvm
fancy2020
2023-10-25 14:07:14 +08:00
抱歉,我描述的不是很清楚。

nvm, n 这些版本管理工具我是在用的。

我的问题是:
1. 这些工具都需要你去手动切换 Node 版本,而不能做到启动一个不同的项目可以自动选择指定版本的 Node 来运行(或者是我不知道?)。

2. 当你使用一个不兼容的 Node 版本运行项目的时候,只要等到代码报错,才会意识到 Node 版本有问题。
我知道 package.json 里有个`engines`字段可以指定 Node 版本,但很多项目是没有指定的 https://docs.npmjs.com/cli/v10/configuring-npm/package-json#engines


之前公司是把 Node 和 NPM 的执行文件直接打包到项目中提交到 git 的,这样可以保证每个人都适用正确的版本来运行项目。
nodejsexpress
2023-10-25 14:10:50 +08:00
把版本切换命令写到 package.json script 里面
lisongeee
2023-10-25 14:12:01 +08:00
@fancy2020 #12

> 而不能做到启动一个不同的项目可以自动选择指定版本的

https://volta.sh/
fancy2020
2023-10-25 14:22:09 +08:00
@lisongeee

感谢!

看起来 Volta 确实就是我想要的工具,我研究一下

Fast: Install and run any JS tool quickly and seamlessly! Volta is built in Rust and ships as a snappy static binary.

Reliable: Ensure everyone in your project has the same tools—without interfering with their workflow.

Universal: No matter the package manager, Node runtime, or OS, one command is all you need: volta install.
liuzhaowei55
2023-10-25 14:30:14 +08:00
根目录添加 .nvmrc 内容为 lts/hydrogen
nvm 可以自动切换版本
HuskyYellow
2023-10-25 14:30:15 +08:00
guorenjie
2023-10-25 14:30:54 +08:00


在每个项目根目录下加一个.nvmrc 文件,指定 node 版本,打开终端自动切换
mMartin
2023-10-25 14:32:20 +08:00
我觉得可以用 conda 管理环境
wjx0912
2023-10-25 14:32:56 +08:00
windows:nvm ( volta 不支持 32bit )
mac:volta

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/985260

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX