故障排除
排查 Hugo 常见问题:命令不可用、主题丢失、草稿不显示、样式异常、构建失败和部署路径错误
故障排除
Hugo 的问题通常集中在五类:版本不一致、主题没拉取、Front Matter 状态不对、资源路径错误、部署平台环境缺依赖。排查时先看终端报错,再按下面清单定位。
先收集信息
hugo version
hugo env
git status --short
git submodule status
构建时加详细输出:
hugo --gc --minify --verbose
开发预览:
hugo server -D -F -E --disableFastRender
如果问题只在模板中出现:
hugo --templateMetrics --templateMetricsHints
Hugo 命令不可用
现象:
hugo: command not found
或 Windows PowerShell:
The term 'hugo' is not recognized
处理:
hugo version
Windows:
where.exe hugo
macOS/Linux:
which hugo
如果找不到,重新安装 Hugo,并确认安装目录加入 PATH。安装后重新打开终端。
Hugo 版本过低
现象:
- 模板函数不存在
- 配置字段不生效
- 主题要求更高版本
- CI 报错但本地正常
处理:
hugo version
然后检查主题 README 的最低版本。CI 中固定版本,例如:
HUGO_VERSION=0.163.0
如果主题需要 SCSS,确认输出中包含 extended。
主题找不到
现象:
Error: module "ananke" not found
或:
Unable to locate theme
检查:
ls themes
Windows:
Get-ChildItem themes
如果使用 submodule:
git submodule update --init --recursive
确认 hugo.toml:
theme = 'ananke'
主题名要与 themes/ 下目录名一致。
文章不显示
常见原因:
draft: truedate是未来时间expiryDate已过期- 文件放错目录
- 列表模板过滤了 Section
开发时显示全部状态:
hugo server -D -F -E
正式发布前修改:
draft: false
如果是文档页不显示,检查 weight 和目录层级,确认是否有 _index.md。
首页或栏目空白
检查内容路径:
content/posts/_index.md
content/posts/hello.md
检查模板过滤:
{{ where site.RegularPages "Section" "posts" }}
如果你的栏目叫 articles,模板还过滤 posts,列表自然为空。
Front Matter 报错
现象:
failed to unmarshal YAML
常见原因:
- 冒号后没有空格
- 中文引号
- 数组格式错误
- 日期格式错误
- YAML 缩进错误
正确示例:
---
title: "我的文章"
date: 2026-06-10T10:00:00+08:00
draft: false
tags: ["Hugo", "Markdown"]
---
如果标题含冒号,建议加引号:
title: "Hugo: 从入门到部署"
样式没有生效
常见原因:
- 没安装 Hugo Extended
- 主题没有拉取
baseURL错误- 资源文件放到
static/但模板用resources.Get - 浏览器缓存旧文件
检查:
hugo version
hugo server -D --disableFastRender
查看浏览器 Network 面板,确认 CSS 请求是否 404。
如果模板中写:
{{ resources.Get "css/main.css" }}
文件必须在:
assets/css/main.css
不是:
static/css/main.css
Sass 或 PostCSS 构建失败
Sass 失败:
hugo version
确认是 Extended。若主题使用 Dart Sass,还要安装 Dart Sass。
PostCSS 失败:
npm ci
hugo --minify
检查:
package.json
postcss.config.js
CI 中也要执行 npm ci。
图片处理失败
常见原因:
- 图片不在 Page Bundle 或
assets/ - 文件名大小写不一致
- 模板匹配表达式写错
- 原图格式不支持
Page Bundle 示例:
content/posts/demo/
├── index.md
└── cover.jpg
模板:
{{ with .Resources.GetMatch "cover.*" }}
{{ $cover := .Resize "800x webp" }}
<img src="{{ $cover.RelPermalink }}" alt="{{ $.Title }}">
{{ else }}
{{ warnf "cover not found: %s" $.File.Path }}
{{ end }}
链接路径错误
现象:
- 本地正常,线上 404
- 部署到子路径后资源丢失
- RSS 或 Sitemap 中地址不对
检查:
baseURL = 'https://example.org/'
如果部署到子路径:
baseURL = 'https://example.org/blog/'
模板里优先使用:
{{ .RelPermalink }}
{{ "images/logo.png" | relURL }}
避免写死:
<a href="/blog/posts/hello/">
构建输出目录不对
默认输出:
public/
构建:
hugo --destination public
部署平台发布目录应填:
public
不要填 content、layouts 或项目根目录。
GitHub Pages 404
检查:
- Pages Source 是否设置为 GitHub Actions
- workflow 是否成功
- artifact 上传路径是否是
./public - 是否使用自定义域名
baseURL是否正确
构建命令建议:
hugo --gc --minify --baseURL "${{ steps.pages.outputs.base_url }}/"
Netlify/Vercel/Cloudflare 构建失败
优先检查日志中的第一条错误。常见问题:
- Hugo 版本过低
- 未安装 Extended
- 没执行
npm ci - Hugo Modules 缺 Go
- 私有主题无法拉取
- submodule 没初始化
环境变量示例:
HUGO_VERSION=0.163.0
HUGO_ENVIRONMENT=production
中文路径问题
中文标题可以保留,但 URL 建议使用英文 slug:
---
title: "Hugo 部署指南"
slug: "hugo-deployment"
---
Git 显示中文路径时:
git config core.quotepath false
模板变量为空
用 with 保护:
{{ with .Params.cover }}
<img src="{{ . }}" alt="{{ $.Title }}">
{{ end }}
给默认值:
{{ .Params.cover | default "/images/default-cover.jpg" }}
调试:
<pre>{{ debug.Dump .Params }}</pre>
或:
{{ warnf "Params: %#v" .Params }}
快速排查顺序
- 运行
hugo version,确认版本和 Extended - 运行
hugo --gc --minify,看第一条错误 - 检查主题是否存在,submodule 是否初始化
- 检查 Front Matter 是否草稿、未来或过期
- 检查资源放在
assets/、static/还是 Page Bundle - 检查
baseURL和部署平台发布目录 - 对比本地和 CI 的 Hugo、Node、Go 版本
下一步
继续阅读 最佳实践清单,把常见经验整理成日常工作流。
评论