什么情况下会选择不升级 node 版本?

2023-09-19 14:14:50 +08:00
 weekidjoker
3086 次点击
所在节点    Node.js
35 条回复
NessajCN
2023-09-19 14:20:08 +08:00
除了必须升级 node 版本以外的所有情况
julyclyde
2023-09-19 14:22:07 +08:00
对社会进步感觉恐惧的时候
enpitsulin
2023-09-19 14:24:33 +08:00
🤣团队他人的能力完全 cover 不住任何技术迭代所带来的任何问题的时候,老老实实 nvm use 14 就得了。大家都是赚口饭钱没啥必要
IvanLi127
2023-09-19 14:25:37 +08:00
项目年久失修的情况下
wu67
2023-09-19 14:28:52 +08:00
项目依赖导致升不上去了. 不维护升级的话, 这个项目基本的所有依赖就锁死版本上限了, 后续想要升级都不敢动, 最后变成💩山, 只能推倒重来

例如我们的 nuxt2 项目, 好家伙, 直接锁死在 16.14.2, 再高一点点都跑不起来, 其他项目我都升到 18.17.1 了, 就这个不敢动也没法动...
weekidjoker
2023-09-19 14:32:56 +08:00
@wu67 #5 就是部分依赖不支持高版本的 node ?
Zhuzhuchenyan
2023-09-19 15:00:20 +08:00
比如老旧项目,升级不如重写,
我司现在有
- 两个 Angular 6 的项目,Node v12
- 两个 Angular 8 的项目,Node v14
- 三个 Angular 13 的项目,Node v16
Zhuzhuchenyan
2023-09-19 15:01:41 +08:00
纠正一下上文,检查了一个 Angular 6 和 8 的项目,Node 版本是 8 和 10 (掩面)
DOLLOR
2023-09-19 15:09:17 +08:00
当你接手一个依赖 sass 的项目时。
zackzergzeng
2023-09-19 15:09:48 +08:00
小项目随便,大项目 node 升级带来的破坏改动传导到依赖升级,依赖升级带来的破环改动传导到项目本身,然后项目本身兼容这些破环性改动的带来的 bug 和测试成本,算算成本和毛利率基本就放弃了……
darkengine
2023-09-19 15:15:43 +08:00
没有时间的时候
weekidjoker
2023-09-19 15:23:15 +08:00
看来我接触的项目还是不够老😂
babyoung
2023-09-19 15:37:12 +08:00
能用
a632079
2023-09-19 16:40:17 +08:00
@weekidjoker #6 依赖 webpack 4 ,webpack 4 使用了旧版 OpenSSL 的接口。webpack 4 貌似使用了 md4 ,无法适配新的 openssl 接口。
其次,nuxt2 ,vue-cli (这货弃用前还能更 webpack5 ) 都直接弃用了😂,要么加参数,要么就只能摆烂了。
duan602728596
2023-09-19 16:51:18 +08:00
让不会 node 的人搞基建,就会成这个样子
LitterGopher
2023-09-19 16:52:26 +08:00
暂时无法联网的时候。
weekidjoker
2023-09-19 17:19:32 +08:00
@a632079 #14 那新需求能用的依赖都不支持低版本的 node ,怎么办
a632079
2023-09-19 17:24:43 +08:00
@weekidjoker #17
因此 Node 有 node 版本管理器啊。比如说 NVM 、N 、PNPM 自带的 env 。
你可以把这个理解成 python 的虚拟环境,不过这个本质更简单,只是改了下 PATH 中 node 的位置。

P.S 三个里面 n 应该是最好用的,全局包是共享的,但是可能会引入版本冲突问题(如果你往全局赛的不只是 cli tool )
weekidjoker
2023-09-19 17:29:49 +08:00
@a632079 #18 我知道有版本管理工具,我的意思是在一个低版本 node 才能跑的项目中,某一天要加新功能,而这个功能用到的依赖不支持低版本 node ,这时候要怎么处理?
a632079
2023-09-19 17:36:15 +08:00
@weekidjoker #19 看看库的老版本支不支持,不支持的话只能换别的库、找 polyfill 或者转义(尤其是针对新的 ES 语法,譬如 JS 的 private field )、要么就是自己移植。

---------
这种坑蛮多的,比如说 chalk ,got 这种:node 现在掀起了一股重写成 esm 的潮流——老的 CommonJS 项目,要么找个转义器,比如说 babel ;要么就是用他的旧版本;要么就是花时间换别的库替代。

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

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

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

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

© 2021 V2EX