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

Rust Rocket启动报failing fairings:Templating 模板解析异常排查

问题原因

报错由Tera模板语法解析失败触发,核心原因是模板内存在未闭合的逻辑块:

  • 代码中{% if logged_in %}条件判断块没有编写对应的{% endif %}闭合标签。Tera要求所有逻辑控制标签(if/for/block等)必须成对闭合,解析器从if标签位置开始向后扫描匹配的endif,一直扫到文件末尾的</html>位置仍未找到对应标签,因此抛出expected tag or some content错误,最终触发模板初始化失败、Rocket启动终止。
  • 你贴出的模板片段末尾缺失</body>、</html>闭合标签,也会加剧解析错误(本地文件存在</html>标签但因逻辑块未闭合无法被正常识别)。

你的Rust业务代码src/main.rs没有逻辑问题,变量传递的写法符合Rocket与dyn_templates的用法规范,不需要修改。

修复方法
  1. 修正模板内的if块结构,在{% else %}分支的<a href="/login">Login</a>代码后、</li>标签前添加{% endif %}标签,闭合条件判断逻辑。
  2. 补全模板末尾缺失的HTML闭合标签,保证HTML结构完整。

修复后的完整模板代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>{{title}}</title>
</head>
<body>
 <header>
    <nav>
        <div>
            <h1>Test</h1>
        </div>
        <!-- Add navigation bar here !-->

        <ul>
            <li>
                <a href="/about">About</a>
            </li>

            <li>
                <a href="/edit/{{title}}">Edit Page</a>
            </li>
            <li>
                {% if logged_in  %}
                 <a href="/user/{{user_name}}">{{user_name}}</a>
                 {% else %}
                 <a href="/login">Login</a>
                 {% endif %}
            </li>
        </ul>

    </nav>
</header>

<main>
    <!-- Provide Title for your page here !-->
    <h1>{{title}}</h1>
</main>
</body>
</html>

修改完成后重新启动项目,即可正常访问路由,context!宏传递的所有变量都能被模板正常渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:36:43