吐槽一下 bun

1 天前
 cj323

bun v1 有一段时间了,以为可以用了。在一个小的项目里试了一下,结果发现哪怕小项目还是基本用不了。

  1. 稳定性差,经常莫名 segfault/memory leak 。贴到 github 发现往往都是新版本迭代时没测试好,侧面说明其稳定性堪忧。
  2. 兼容性差,一到 linux 环境就各种出问题。我用服务器用的 ubuntu 24 ,经常崩溃或者报错。docker 用官方的 image 也是一样。现在部署时不抱太大希望了已经。
  3. npm 包兼容性差,很多重要的包要么兼容得不好,要么说明了不会兼容。这里比想象中的多。
  4. api 变动大,比如之前用过 bun serve 做 http server ,里面有个 fetch 写法,里面可以自己处理路由,后来 1.2 出了自带路由,结果不 backward compatible ,用就得自己重构。。。

一些可以称赞的地方

  1. 文档挺好,简单明了
  2. api 方便实用,比如 Bun.password ,Bun.sql ,等等,相比用 node 省了很多三方库。(前提是能稳定)
  3. 有前端的话,自带 bundler ,不用配 vite 什么的。(前提还是得稳定,这个功能在 linux 环境极其不稳定,基本用不了)
  4. bun add/install 快一点

总结就是,设计得挺好,有想法。但是实际做得太糙,哪怕小项目都不敢用。最开始舒服了一下,现在还得老老实实改回 node 。

3045 次点击
所在节点    Node.js
31 条回复
npcoci
1 天前
写点小工具,打包成 exe 程序给别人用还是很方便的
kneo
1 天前
不稳定是真的。内存错误想绕都绕不过去。

偶尔开发环境想省点事也会用 bun ,生产环境必须支持 node 。

当然,很多人所谓的”生产环境”没那么重要,挂了就挂了,重启就完事,也不会有人问责。自己看着办。
shuimugan
1 天前
bun 确实不稳定,有一些号称兼容了 node 的 api 其实还没兼容,加密库和文件流这块目前还有问题,我测试 exceljs 经常生成不了文件,http 库也有一个和 deno 一样的问题就是不支持 connect 事件,不知道是不是本身单元测试就有问题。

内存占用也有问题,同样的代码在 windows 下占用一百多 MB 内存,去到 linux 只占用 7MB…倒是 bun 内置那些函数库非常实用。其实碰到兼容性的问题如果能拆成独立小 api 用 node 或者 deno 去部署的话倒也还能接受,我就拆了 2 个这样的 api 。

deno 就很稳,拿来替代 node 一点问题都没有。

node 从 15 到现在的 24 都没啥吸引人的新特性,绝大部分都是缝缝补补,被 deno 和 bun 追上那是一点都不冤枉。
mizuki9
1 天前
deno 告诉我们,历史设计问题是不能被修复的,想要重新设计,十几年的生态根本迁移不了,一直半死不活的,最后还是回去兼容 node 了。
bun 和 node 比好像没什么特殊优点,node 已经支持丢弃类型直接运行 ts ,node 对 cjs 与 esm 互操作也支持了,node 也支持了--watch ,其他优势是能少装几个依赖吗,bun 若是真的速度更快,那的确是一个显著优点,但似乎 bun 根本不够稳定。

总之,node 对比其他两位,根本没什么真正有关痛痒的缺点(什么,node 历史设计有问题? deno 现状不是告诉你历史设计根本不可能修复吗)
cj323
1 天前
@zsj1029 提了几个 issue ,过去几个月也没有解决。我感觉是是他们问题太多了,记得当时看到他们有 5000 多 open issue ,我人都傻了。我尊重开源精神,issue 里也没说啥就当帮个忙,毕竟 bun 是个 runtime 哪有那么好搞。只是他们也算是有融资有雇员的情况下,v1 还这么不稳定让我觉得哪里不正常。毕竟隔壁 deno 也是 runtime 就没有这么多 bug/issue 。

另外,我觉得直接能运行 typescript 这点确实对新手比较友好,有一说一,bun init 也很方便。
cj323
1 天前
@leil 比如涉及到浏览器的 playwright 或者 puppeteer ,这两个在 macos 上 bun 可用一部分功能但 linux 现在肯定用不了。
yyj08070631
8 小时 24 分钟前
@ysc3839 之前我 benchmark 过纯 js 几种场景,bun 和 node 比只有启动的时候有优势,跑复杂代码要慢不少,其实也很容易理解,TurboFan 干了那么多事情,启动慢也很正常
yyj08070631
8 小时 21 分钟前
@enchilada2020 deno 首次发布只比 bun 早三年,但现在 deno 比 bun 稳定的多,对 node 库的兼容性也更好,issue 和 mr 的数量也更少,我感觉跟技术路线还是有关系的
yyj08070631
8 小时 15 分钟前
@enchilada2020 技术路线这块,我觉得体现最明显的是内存泄漏的问题,去年我瞄了一眼,bun 内存泄露相关的 issue 比 deno 多了十几倍,照理来说有 deno 和 node 这些老前辈,架构上应该不会有太大问题才对

之前在 hackernews 上看到作者回复不少内存泄漏的问题,都是跟 jsc 的调度有关系
zsj1029
7 小时 15 分钟前
@cj323 好吧,其实我也有些偏激了,bug 是有,可能我用的比较少,看重他的 build ,部署方便,慢慢来吧
igun
4 小时 36 分钟前
可以来 discord 问,解决问题速度更快

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

https://yangjunhui.monster/t/1131622

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

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

© 2021 V2EX