如何防止 Node.js 频繁修车

2022-09-21 16:49:49 +08:00
 join
如题,我很少能够顺利的跑起来一个 Node.js 项目,每次都会遇到各种各样的包管理引入的坑。
有什么 Node.js 最佳实践能让我们少修点车?
10281 次点击
所在节点    Node.js
97 条回复
Cbdy
2022-09-21 19:15:49 +08:00
用 pnpm 之后基本问题少了
有个小妙招是,尽量用 js 库,避免 native 库
star7th
2022-09-21 19:19:25 +08:00
你是怎么做到的? 我很少运行不起来一个 nodejs 项目,一般没啥问题。能经常遇到问题你也算很厉害了。我好像遇到的少数跑不了的情况是,部分依赖包更新了版本,且不做向后兼容。这个时候需要自己指定依赖的安装版本才行。
DOLLOR
2022-09-21 19:28:17 +08:00
node_modules.7z
releaseme
2022-09-21 19:38:50 +08:00
@DOLLOR 你还别说 yarn3 就可以将依赖和代码一同提交(将每个依赖都压缩成 zip )
wu67
2022-09-21 20:11:52 +08:00
@star7th
github 上面一些远古项目和野鸡项目(指个人开发者临时发电搞的轮子, 然后几年不更新)还是很容易出现这种情况的. 真的是 npm i 磕磕碰碰的跑完, 然后 run dev 跑不起来那种.
不过绝大部分比较知名的包一般都没这种情况, 其实是跟维护人有关, 有些开发者就喜欢乱定版本号, 把破坏性更新弄到小版本里面, 把功能更新弄到补丁版本, 没眼看
sjhhjx0122
2022-09-21 20:28:45 +08:00
我真的很少遇到 node 项目跑不起来的,不过一般一个项目最近一次提交是 1,2 年前的我就不看了
ailer
2022-09-21 20:32:25 +08:00
node js 包管理就是碰运气,node modules 文件夹删掉后遇到什么奇怪问题都有可能
Twinkle
2022-09-21 20:37:40 +08:00
包 lock 了,node 和 npm 版本最好也要 lock ,或者至少在 README 中说明首次开发时使用的版本。我司项目就只能用 node 12 跑,14 就不行 [doge]
mango111
2022-09-21 20:45:11 +08:00
@Twinkle 太先进了,我司项目只能用 node10 跑。有意思的是 codesandbox 也只能用 node10 跑。。之前去研究里面的编译咋搞,clone 下来本地跑来着。说明多知名的项目都有尾大不掉的问题
Vegetable
2022-09-21 21:15:27 +08:00
提高自身姿势水平即可极大缓解
Mithril
2022-09-21 21:16:57 +08:00
最简单的,你把 node modules 直接干到代码版本管理里。

只要你们组长和 IT 没把你打死,那你就永远不会出问题。
yanguangs
2022-09-21 21:46:59 +08:00
直接下个压缩包吧,
包管理不锁版本真的是傻逼设计
yolio2003
2022-09-21 21:59:12 +08:00
做前端都是娱乐的,哪有什么稳定靠谱可言 )逃。。
zsj1029
2022-09-22 00:56:53 +08:00
@join 是时候使用新标准双端兼容的 fetch 了
sunorg
2022-09-22 01:38:08 +08:00
go ,php ,nodejs 都在用,的确 go 的包管理最好。

nodejs 最大的问题是过两个月跑不起来了,需要修依赖。

php 的 composer 同类问题也开始多起来。
isbase
2022-09-22 01:57:15 +08:00
pnpm 解决大部分这类问题。当然 node 版本也有关系
ada87
2022-09-22 07:52:18 +08:00
修车也是一种技能,很多牛人在比较差的车上,不停的修,领悟的新的思维范式,于是就诞生了另一个破车。
missdeer
2022-09-22 08:45:32 +08:00
刚刚写了 2 天 node.js (本人多年 C++、Go 开发经验),发现这玩意写小东西的开发效率真是高,但是它能玩出来的奇技淫巧比人人诟病的 C++还多
wangtian2020
2022-09-22 09:05:20 +08:00
git 提交 package-lock.json 锁定包的版本肯定不会出问题
要升级包自己删掉 package-lock.json 然后手动更新版本
hamsterbase
2022-09-22 09:29:33 +08:00
@Mithril

有一天我看 chrome 的源码, 发现 chrome 团队就是这么做的。

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

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

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

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

© 2021 V2EX