关于前端 node 多版本你是如何解决的,还有您是本地开发还是远程开发

2024-07-20 12:33:48 +08:00
 jenson47

随着不同年代的项目,由于依赖的限制,有些支持的 node 版本比较低,有些又需要比较高。

目前网上大家的解决方案:

  1. window nvm 多版本管理
  2. n

如果我想要同时开多个项目的话,就比较麻烦,而且每次都得来回切换。 目前的我的开发都尽量避免在本地环境开发,毕竟没有几个公司能给你 64GB 的内存

Docker 解决 Node 多版本问题

优点:

  1. 再也不需要手动去切
  2. 将需求通过 Dockerfile 写好,后续只需要构建,构建的命令写成 shell ,比如我通过 Makefile
  3. 通过目录挂载解决模块缓存问题
  4. 由于在口罩期间,刚好可以结合远程开发

缺点:

  1. 运行时得调用 docker 命令
  2. 还得配置一堆变量挂载,映射端口
  3. 尤其是后面的有些项目都不去认这个 PORT 环境变量了,得自行修改调整

经过我这两年的项目实践,我将docker node 多版本操作进行了整理

  1. 将操作 docker 的命令这些封装成 shell
  2. 环境变量 刚好放到 .env.development中,比如后端 ip 域名,暴露端口等
  3. 运行,直接运行 shell 脚本,当然为了让脚本更简洁,我将常用的命令封装成 Makefile

具体实例请查看:https://github.com/miss55/docker-node/blob/main/README-zh.md#%E4%BE%8B%E5%AD%90

配合 vscode 的 Remote 扩展 进行远程开发

搜索 vscode 扩展,关键字: Remote Development ,看着自己的需求添加相应的扩展即可

具体教程可以参考vscode 官网的教程

简单教程:

  1. 新开一个 vscode [ ctrl + shift + n ]
  2. 连接到服务器 [ ctrl + shift + p ] + [ connect to host ]
  3. 如果还没配置,则选择 Add New SSH Hosts 去添加即可
  4. 连接成功后,如果没有选择项目目录,则可以自行选择
7992 次点击
所在节点    Node.js
62 条回复
darksword21
2024-07-20 17:07:38 +08:00
nix
emacs tramp
faimin
2024-07-20 17:44:51 +08:00
volta +1
8E9aYW8oj31rnbOK
2024-07-20 18:30:09 +08:00
我一直用虚拟机...
Belmode
2024-07-20 18:48:52 +08:00
手动临时变更环境变量
otakustay
2024-07-20 18:56:04 +08:00
有.nvmrc 不就会自动切版本了吗
jenson47
2024-07-20 19:20:55 +08:00
@foam
@lingyired @otakustay 确实是我对 nvm 研究没那么深入,之前在 window 上出现切换需要权限问题,后面就放弃多版本切换,恰好当时还比较喜欢完 docker 就想着直接丢到 docker 上,如此以来需要什么依赖跟宿主机就没关系了,在一定程度上保证宿主机的干净
IAmAnonymous
2024-07-20 19:29:32 +08:00
node 小白问个问题,我引入一个库 npm install 之后
162 vulnerabilities (1 low, 92 moderate, 66 high, 3 critical)

然后 npm audit fix --force
IAmAnonymous
2024-07-20 19:30:07 +08:00
node 小白问个问题,我引入一个库 npm install 之后
162 vulnerabilities (1 low, 92 moderate, 66 high, 3 critical)

然后 npm audit fix --force

变成
8 vulnerabilities (2 moderate, 6 high)

应该怎么解决
zbowen66
2024-07-20 20:19:00 +08:00
@angrylid #5 不是有个命令叫 reload window 吗,可以试试
n18255447846
2024-07-20 20:33:36 +08:00
用 prebuilt binaries 不就行了,把 node 命令换成绝对路径,想要哪个用哪个,
n18255447846
2024-07-20 20:39:55 +08:00
@IAmAnonymous npm 常规操作,能跑没什么好解决的,无非就是一些包过时了或有一些安全问题被扫到了。

非要解决就升级风险包到 latest ,不过升级是一件费力不讨好的事。另外如果最新的包还有安全问题,就换个。
IAmAnonymous
2024-07-20 21:04:19 +08:00
@n18255447846 其实只要能跑,不用管这个 vulnerabilities 是 low ,mediate, high, critical 是吗?谢谢
mabelrussell
2024-07-20 22:31:08 +08:00
asdf
14
2024-07-20 22:40:18 +08:00
我是用 nvm ,在不同项目放不同的 .nvmrc 文件,.nvmrc 文件声明版本号,cd 到任意目录 nvm use 就能跑。
然后在 packages.json 声明 engines 指定版本,这样忘记 nvm use 执行 npm 相关命令会报错。
PrtScScrLk
2024-07-20 22:42:49 +08:00
@14 感觉是个不错的方式,从 14 到现在的 20 ,版本问题其实挺头疼的,现在启动项目都要问一嘴用什么版本。显式的配置文件去声明版本是一个很好的方式呀哈哈哈
FightPig
2024-07-20 22:43:26 +08:00
一直用的 nvm ,以前觉得挺卡的,后来换成 fish 后觉得还行
yagamil
2024-07-20 23:04:06 +08:00
目前的我的开发都尽量避免在本地环境开发,毕竟没有几个公司能给你 64GB 的内存。

远程开发我感觉还更加不爽。。。本地台式机器 64GB ,很容易呀。
bxh8640123
2024-07-20 23:05:35 +08:00
nvm + nvmrc + zsh vvm auto use
Cbdy
2024-07-20 23:13:13 +08:00
直接把 node 安装到项目目录不就可以了吗?几行 shell 脚本的事儿
可以参考 gradle 的 toolchains
Heymans
2024-07-20 23:13:17 +08:00
可以使用 vscode 的 dev container, 结合 docker 使用

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

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

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

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

© 2021 V2EX