rocket build 不支持直接部署 html 站点,它仅生成 rust 二进制文件,不产出静态资源;若需托管 html,须手动配置 fileserver 并确保 public 目录路径正确。

rocket build 命令不支持直接部署 HTML 站点
它根本不是为静态 HTML 部署设计的工具。rocket build 是 Rocket(Rust Web 框架)的本地构建命令,只生成可执行二进制文件,不是 npm run build 那种产出 dist/ 目录的静态打包器。你运行它,只会得到一个跑在 localhost 的 Rust 服务程序,不会吐出 HTML 文件,更不会自动上传或同步到服务器。
真正要发布纯 HTML 站点,得绕开 rocket build
如果你手头只有几个 index.html、style.css 和图片,目标是让它们通过域名访问,那整个流程和 Rocket 框架无关——你不需要启动任何 Rust 服务,也不该用 rocket build。
常见做法是:
- 把所有 HTML/CSS/JS 文件整理进一个目录(比如叫
public/或docs/) - 用 Nginx、Caddy、GitHub Pages、Vercel 或 Netlify 这类静态托管服务直接托管该目录
- 如果非要用 Rust 服务“代理”这些文件,得手动用
rocket::fs::NamedFile或rocket::fs::FileServer注册静态路由,而不是依赖rocket build
误用 rocket build 的典型错误现象
执行 rocket build 后发现:
- 项目根目录没多出
dist/或build/文件夹 → 正常,它本来就不生成静态资源 - 运行生成的二进制文件,打开
http://localhost:8000却 404 → 因为没配置静态文件路由,Rocket 默认不自动 serve 任意 HTML - 试图把
target/debug/your_app当成“部署包”扔到服务器上运行 → 可能缺 OpenSSL、环境变量或配置文件,且仍需手动处理静态资源路径
如果坚持用 Rocket 托管 HTML,必须显式配置文件服务
这是唯一靠谱的结合方式:用 Rocket 当 HTTP 服务容器,但自己告诉它“哪些路径对应哪些 HTML 文件”。关键不是 rocket build,而是代码里怎么写。
示例片段(Rocket 0.5+):
use rocket::fs::{FileServer, relative};
#[launch]
fn rocket() -> _ {
rocket::build()
.attach(FileServer::from(relative!("../public")))
}
注意点:
-
../public必须是真实存在的目录,且含index.html - 构建后,二进制文件需和
public/目录保持相对路径一致,否则运行时报Failed to open static file - 没有
FileServer,哪怕rocket build成功,也看不到任何 HTML
真正卡住人的地方,往往不是“怎么写”,而是混淆了“构建命令”和“部署动作”——rocket build 只负责编译 Rust 代码,HTML 文件的组织、路径映射、服务暴露,全靠你自己在代码里声明清楚。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











