常见问题
Hugo 的 论坛 是一个活跃的用户和开发者社区,他们会解答问题、分享知识并提供示例。快速搜索超过 20,000 个主题通常就能解答您的问题。在提出您的第一个问题之前,请务必阅读有关 寻求帮助 的内容。
以下只是一些新用户最常问到的问题中的几个。
错误消息表明某个功能不可用。为什么?
Hugo 提供三个版本:标准版、扩展版和扩展/部署版。标准版提供核心功能,而扩展版和扩展/部署版则提供高级功能。
功能 | 扩展版 | 扩展/部署版 |
---|---|---|
在 处理图像 时编码为 WebP 格式。任何版本都可以解码 WebP 图像。 | ✔️ | ✔️ |
使用嵌入式 LibSass 转译器[将 Sass 转译为 CSS]。任何版本都可以使用Dart Sass 转译器。 | ✔️ | ✔️ |
将您的站点直接部署到 Google Cloud Storage 存储桶、AWS S3 存储桶或 Azure 存储容器。参见 详情 。 | ❌ | ✔️ |
当您尝试使用已安装版本中不可用的功能时,Hugo 会抛出此错误:
此功能在此版本的 Hugo 中不可用
要解决此问题,请根据上面的功能表安装不同的版本。有关详细信息,请参阅 安装 部分。
为什么访问主页时会看到“页面未找到”?
在 content/_index.md 文件中:
draft
是否设置为true
?date
是否在将来?publishDate
是否在将来?expiryDate
是否在过去?
如果以上任何问题的答案是肯定的,则更改字段值,或使用以下命令行标志之一: --buildDrafts
、 --buildFuture
或 --buildExpired
。
为什么某个页面未发布?
在 content/section/page.md 文件或 content/section/page/index.md 文件中:
draft
是否设置为true
?date
是否在将来?publishDate
是否在将来?expiryDate
是否在过去?
如果以上任何问题的答案是肯定的,则更改字段值,或使用以下命令行标志之一: --buildDrafts
、 --buildFuture
或 --buildExpired
。
为什么我看不到任何页面的子页面?
您可能有一个 index.md 文件而不是 _index.md 文件。请参阅 详细信息 。
index.md 文件和 _index.md 文件有什么区别?
包含 index.md 文件的目录是 叶子捆绑包 。包含 _index.md 文件的目录是 分支捆绑包 。请参阅 详细信息 。
为什么我的局部模板未按预期呈现?
调用局部模板时,您可能忽略了传递所需的 上下文 。例如:
{{/* 错误的 */}}
{{ partial "_internal/pagination.html" }}
{{/* 正确的 */}}
{{ partial "_internal/pagination.html" . }}
在模板中,为变量赋值时 :=
和 =
有什么区别?
使用 :=
初始化变量,使用 =
为已初始化的变量赋值。请参阅 详细信息 。
分页列表页面时,为什么页面集合没有按指定过滤?
您可能在同一页面上多次调用了 Paginate
或 Paginator
方法。请参阅 详细信息 。
为什么有两种调用短代码的方法?
如果短代码模板或开始和结束短代码标记之间的内容包含 Markdown,则使用 {{% shortcode %}}
表示法。否则,使用 {{< shortcode >}}
表示法。请参阅 详细信息 。
我可以使用环境变量来控制配置吗?
是的。请参阅 详细信息 。
为什么我看到从一个构建到下一个构建的不一致输出?
最常见的原因是页面冲突(将两个页面发布到同一路径)和并发的影响。使用 --printPathWarnings
命令行标志检查页面冲突,如果您怀疑存在并发问题,请在 论坛 上创建一个主题。
为什么 Hugo 的开发服务器没有检测到文件更改?
在默认配置下,Hugo 的文件监视器可能无法检测到文件更改的情况:
- 在使用 Windows 子系统 (WSL/WSL2) 并将项目文件放在 Windows 分区上时运行 Hugo
- 在本地运行 Hugo,项目文件位于可移动驱动器上
- 在本地运行 Hugo,项目文件位于通过 NFS、SMB 或 CIFS 协议访问的存储服务器上
在这些情况下,请使用 --poll
命令行标志,而不是监视本机文件系统事件。例如,要每 700 毫秒轮询项目文件,请使用 --poll 700ms
。
为什么我的页面 Scratch 或 Store 缺少值?
Page
对象上的 Scratch
和 Store
方法允许您在给定的页面上创建一个 备忘录 来存储和操作数据。值通常在短代码、短代码调用的局部模板或 Markdown 呈现钩子中设置。在这三种情况下,备忘录值在 Hugo 呈现页面内容之前是不确定的。
如果您需要从父模板访问备忘录值,并且父模板尚未呈现页面内容,则可以通过将返回值赋值给 空操作 变量来触发内容呈现:
{{ $noop := .Content }}
{{ .Store.Get "mykey" }}
您也可以使用其他方法来触发内容呈现。请参见下一个常见问题解答。
哪些页面方法会触发内容呈现?
Page
对象上的以下方法会触发内容呈现: Content
、 ContentWithoutSummary
、 FuzzyWordCount
、 Len
、 Plain
、 PlainWords
、 ReadingTime
、 Summary
、 Truncated
和 WordCount
。