You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu20.04下Bun运行Express Server无法绑定端口求助

Ubuntu 20.04用Bun跑Express服务器端口绑定失败?试试这些方案

先查Bun版本兼容性

Ubuntu 20.04自带的glibc是2.31,版本偏老,而Bun部分新版本对glibc要求更高,可能直接导致底层网络调用异常。

  • 执行bun --version查看当前版本,试试降级到对旧系统更友好的版本,比如bun install bun@1.0.10
  • 降级后删除旧依赖重新安装:rm -rf node_modules bun.lockb && bun install

检查Express与Bun的适配细节

Bun对Express的兼容并非完全无缝,部分配置或依赖可能触发端口绑定问题:

  • 查看代码里app.listen的参数,别用默认的localhost,显式指定0.0.0.0试试:
    app.listen(3000, '0.0.0.0', () => {
      console.log('Server running on port 3000');
    });
    
  • 项目里如果有body-parser这类中间件,先临时移除非核心中间件,逐步排查是否是某类中间件与Bun冲突

系统级网络限制别漏了

就算关闭了防火墙,Ubuntu 20.04可能还有其他网络限制:

  • 检查apparmor是否限制了进程,执行sudo aa-status查看状态,若相关进程被限制,临时禁用测试:sudo systemctl stop apparmor
  • 查看系统端口范围,执行sysctl net.ipv4.ip_local_port_range,确保目标端口在范围内;如果需要使用1024以下的端口,给Bun添加权限:sudo setcap 'cap_net_bind_service=+ep' $(which bun)

用Bun原生服务验证端口可用性

Bun用的是自研网络栈,和Node.js不同,先跳过Express验证端口能否正常绑定:

  • 写个简单的Bun原生服务测试:
    import { serve } from "bun";
    serve({
      port: 3000,
      fetch(req) {
        return new Response("Hello from Bun!");
      },
    });
    
    如果这个测试能正常运行,说明问题出在Express与Bun的兼容层,试试把Express升级到最新版本:bun add express@latest

内容的提问来源于stack exchange,提问作者Akhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:14:59