解决bun x create-next-app交互式提问时卡死问题

作者:技术拾光时间:2026-06-02 06:44:37浏览:669

在 WSL Ubuntu 中运行 bun x create-next-app 时,常因终端交互异常卡在 TypeScript 选项界面;可通过禁用交互模式、显式传参或升级 Bun 至 v1.0.2+ 快速解决。 如果你正在 Windows Subsystem for Linux (WSL) 的 Ub

在 WSL Ubuntu 中运行 bun x create-next-app 时,常因终端交互异常卡在 TypeScript 选项界面;可通过禁用交互模式、显式传参或升级 Bun 至 v1.0.2+ 快速解决。

如果你正在 Windows Subsystem for Linux (WSL) 的 Ubuntu 环境下尝试用 Bun 创建 Next.js 项目,大概率会遇到一个令人困扰的情况:命令 bun x create-next-app 运行后,会在询问“是否使用 TypeScript”的环节突然卡住。键盘输入毫无反应,进程如同挂起,只能无奈地终止。

不必怀疑自己的操作,这其实是一个已知的兼容性问题。问题根源在于 Bun v1.0.1 及更早的版本,其底层对伪终端(PTY)的处理逻辑与某些 WSL 配置存在不兼容,导致交互式流程失效。

推荐解决方案(按优先级排序)

解决这个问题的路径很清晰,下面两种方法都能让你顺利完成任务。

1. 立即升级 Bun(最简修复)

这是最一劳永逸的办法。Bun 团队在 v1.0.2 及之后的版本中已经合并了针对此问题的修复补丁。你只需要在终端中执行一条升级命令:

bun upgrade

升级完成后,再次运行 bun x create-next-app,交互式提问便能恢复正常工作。

2. 跳过交互,使用非交互式模式(兼容性强)

如果你暂时不想升级,或者追求绝对稳定的创建流程,那么绕过交互式提问是更佳选择。直接通过命令行参数一次性指定所有配置,干净利落:

create-next-app my-app \
  --ts \
  --tailwind \
  --eslint \
  --app \
  --src-dir \
  --use-bun \
  --import-alias "@/*"

提示:上面这条命令启用了一系列常用配置(TypeScript, Tailwind CSS, ESLint, App Router 等)。你可以根据项目实际需要,自由删减或调整这些参数。例如,去掉 --ts 就意味着不使用 TypeScript。所有可用的标志都可以在 Next.js 官方文档的“非交互模式”部分找到。

注意事项

在实施解决方案时,有几点细节值得留意:

  • 旧版 Bun 的临时对策:如果因故必须使用旧版 Bun,请尽量避免在 WSL 中依赖 bun x 来启动任何交互式脚手架工具。可以优先采用上面提到的非交互式命令,或者临时改用 npx create-next-app@latest 作为替代方案。
  • 终端环境:确保你的 WSL 终端是默认配置(比如使用 Windows Terminal 搭配 Ubuntu)。一些第三方的终端模拟器可能会加剧 PTY 的兼容性问题。
  • 工具准备:在执行非交互式命令前,建议先全局安装最新版的 create-next-app 工具(bun add -g create-next-app),以保证功能的完整性。

总结

简单来说,这个卡死问题本质上是 Bun 早期版本在 WSL 特定环境下的一个终端控制缺陷。社区在 issue #4664 中早已确认并修复了它。

因此,升级 Bun 是治本之策。而使用显式参数创建项目,不仅稳定可靠,还能让整个过程可脚本化,这本身就是适合 CI/CD 流程的最佳实践,值得养成习惯。