V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cj323
V2EX  ›  Node.js

吐槽一下 bun

  •  
  •   cj323 · 23 小时 51 分钟前 · 2787 次点击

    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 。

    26 条回复    2025-05-14 19:13:34 +08:00
    FishBear
        1
    FishBear  
       23 小时 26 分钟前 via iPhone
    速度确实挺快,内存会泄露,实现不稳定,有 bug
    确实太粗糙了,每次都修一堆 bug
    enchilada2020
        2
    enchilada2020  
       23 小时 23 分钟前 via Android
    玩具而已 拿什么跟 Node 打 人家 Deno 都多少年了也没成气候
    zsj1029
        3
    zsj1029  
       23 小时 20 分钟前
    1.1x 开始用,配合 express ,写一些 api ,然后 build 单文件程序,目前跑的还算稳定,内存占用稍高,还可以接受
    zsj1029
        4
    zsj1029  
       23 小时 18 分钟前
    本来就开源的,多一些宽容,遇到 bug ,去 github 提,目前来说吊打 deno ,对新手比较友好,选择适合自己的,不要习惯伸手党
    Bronya
        5
    Bronya  
       23 小时 14 分钟前
    直接支持 TypeScript 这一点对我来说非常方便。
    leil
        6
    leil  
       23 小时 6 分钟前   ❤️ 1
    好奇你都用了哪些包,我用着 bun 非常好用并且非常稳定,生产也是用 bun ,有另一台垃圾服务器去做 https 的 uptime 统计,可用性都是 99.9%,失败了的都是网络掉包了的,服务器那边没任何问题,也是小项目。
    还有尽量不要用 bun 自带的 http server 等组件,尤其你都发现不稳的情况下,比如用 honojs ,跨运行时的,一旦 bun 真的满足不了你需求了,你可以无缝切换到 node ,不然到时候移植会让你崩溃。
    Binwalker
        7
    Binwalker  
       23 小时 6 分钟前
    不如 deno 稳定成熟,这点性能差距其实不太重要
    Nyeshuai
        8
    Nyeshuai  
       23 小时 0 分钟前
    看着支持贼多, 以为真能开箱即用替换少装一些包, 实际体验下还是太乐观了.

    启动 html server, 大概率有脚本报错, 明明就是常规的 umd. live-server 没问题的.
    monorepo, 不支持别名 command, 只能显式 filter 用, 一下子就感觉是个残废, 还得是 pnpm.
    打包 ts, 只支持 tsconfig, 没有额外的 dts 配置, 还得是 tsup.

    就自带的 pg 和 drizzle 感觉结合的还可以.
    leil
        9
    leil  
       22 小时 59 分钟前
    @Binwalker 我用 bun 不是为了性能,而是整个过程都很丝滑,创始人挺肝的,做的非常好,作者说的和 npm 兼容得不好的包我目前也还未遇到
    bjfane
        10
    bjfane  
       22 小时 46 分钟前
    我也是相对都是比较新的第三方包 整体 vue 栈的,还好,暂时只有一个玩具是 bun server 的,看起来也还行。
    hronro
        11
    hronro  
       22 小时 31 分钟前
    你用过 Bun 的底层语言 Zig ,你就知道现在用 Zig 写的项目都是玩具。不是说这语言本身不行,而是这语言本身离正式发布都还有个 4 、5 年时间,现在每个版本之间 breaking change 无数,现在用这语言来写正式项目本身就很搞笑。
    Gilfoyle26
        12
    Gilfoyle26  
       20 小时 55 分钟前
    Bun 需要具有 AVX2 硬件支持的机器。Elysia 的官方文档说的,但是我不敢用了。
    ysc3839
        13
    ysc3839  
       20 小时 42 分钟前 via Android
    个人不看好 Bun 。
    没记错的话 Bun 底层引擎用的是苹果 Safari 的 JavaScript Core 吧?
    那苹果官方有支持 JavaScript Core 在别的系统上运行吗?如果有,那遇到问题会第一时间修复吗?
    就算苹果有支持,Safari 本身不支持在其他系统上运行,那相对 V8 引擎也更难发现问题。
    70k
        14
    70k  
       20 小时 25 分钟前
    忘了谁给我吹的说这个玩意牛逼的很 之前有时间去看了下项目,有 4.5k 的 open issue ,7.5k close 就知道这玩意别想稳定了
    skiy
        15
    skiy  
       20 小时 11 分钟前
    速度挺快的啊。我也是 ubuntu 。不过没用这么高级,就随便用用而已。
    ndxxx
        16
    ndxxx  
       20 小时 10 分钟前
    自己小项目玩玩的话 bun 挺好的,做商业项目目前肯定只看 nodejs 啊。倒是 deno 不上不下的。
    shiny
        17
    shiny  
       20 小时 4 分钟前
    爱因斯坦的小板凳,现在已经很不错了。线上用了很久了,感受还不错,没啥问题。
    shiny
        18
    shiny  
       20 小时 2 分钟前
    不过它自带的一些库还是要慎用,bug 挺多;标准库问题不大,最多只是部分功能未实现。
    nomagick
        19
    nomagick  
       20 小时 0 分钟前
    Node.js ES Module loader, 麻痹写了多少年了,还是个半成品,一身的 bug ,自己内部的人推不动,外部的人也改不动。随便啥乱糟功能打个 preview 标签就敢 release, 一副大限将至行将就木的样子。

    Bun 对比下来就很有生机活力
    RogerL
        20
    RogerL  
       18 小时 27 分钟前
    能说说具体哪些地方不稳定么?我之前简单用 Elysia 写过东西,感觉还行
    npcoci
        21
    npcoci  
       18 小时 22 分钟前
    写点小工具,打包成 exe 程序给别人用还是很方便的
    kneo
        22
    kneo  
       18 小时 14 分钟前 via Android
    不稳定是真的。内存错误想绕都绕不过去。

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

    当然,很多人所谓的”生产环境”没那么重要,挂了就挂了,重启就完事,也不会有人问责。自己看着办。
    shuimugan
        23
    shuimugan  
       18 小时 14 分钟前
    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
        24
    mizuki9  
       15 小时 15 分钟前
    deno 告诉我们,历史设计问题是不能被修复的,想要重新设计,十几年的生态根本迁移不了,一直半死不活的,最后还是回去兼容 node 了。
    bun 和 node 比好像没什么特殊优点,node 已经支持丢弃类型直接运行 ts ,node 对 cjs 与 esm 互操作也支持了,node 也支持了--watch ,其他优势是能少装几个依赖吗,bun 若是真的速度更快,那的确是一个显著优点,但似乎 bun 根本不够稳定。

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

    另外,我觉得直接能运行 typescript 这点确实对新手比较友好,有一说一,bun init 也很方便。
    cj323
        26
    cj323  
    OP
       14 小时 55 分钟前
    @leil 比如涉及到浏览器的 playwright 或者 puppeteer ,这两个在 macos 上 bun 可用一部分功能但 linux 现在肯定用不了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5785 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 02:09 · PVG 10:09 · LAX 19:09 · JFK 22:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.