常見問題 Frequently asked questions
Hugo 的 論壇 是一個活躍的社群,使用者和開發者在這裡回答問題、分享知識並提供範例。快速搜尋超過 20,000 個主題通常可以回答你的問題。在提問之前,請務必閱讀 請求幫助 的相關說明。
以下是新用戶常見的幾個問題。
為何會出現「功能不可用」的錯誤訊息?
Hugo 有三種版本:標準版、擴充版和擴充/部署版。雖然標準版提供核心功能,但擴充版和擴充/部署版提供進階功能。
功能 | 擴展版 (extended edition) | 擴展/部署版 (extended/deploy edition) |
---|---|---|
將處理影像 時編碼為 WebP 格式。任何版本都能解碼 WebP 圖片。 | ✔ | ✔ |
使用內建的 LibSass 編譯器將 Sass 編譯為 CSS。任何版本都可以使用 Dart Sass 編譯器。 | ✔ | ✔ |
將網站直接部署到 Google Cloud Storage 存儲桶、AWS S3 存儲桶或 Azure Storage 容器。詳情請參見 細節。 | ✘ | ✔ |
當你嘗試使用未在你所安裝版本中提供的功能時,Hugo 會顯示以下錯誤訊息:
this feature is not available in this edition of 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 子系統 Linux (WSL/WSL2) 中運行 Hugo,且專案文件位於 Windows 分區上
- 在可移動磁碟上本地運行 Hugo 且專案文件位於該磁碟
- 在通過 NFS、SMB 或 CIFS 協議訪問的存儲伺服器上本地運行 Hugo
在這些情況下,請使用 --poll
指令列標誌來監控文件變更。例如,若要每 700 毫秒輪詢專案文件,請使用 --poll 700ms
。
為什麼我的頁面 Scratch 或 Store 中的值缺失?
Scratch
和 Store
方法允許你在給定的頁面上創建一個 臨時區塊,來存儲和處理資料。這些值通常會在短代碼、由短代碼調用的部分範本中,或由 Markdown 渲染鉤子設置。在這三種情況下,臨時區塊的值直到 Hugo 渲染頁面內容之前是無法確定的。
如果你需要從父範本中訪問臨時區塊的值,且父範本尚未渲染頁面內容,你可以通過將返回的值賦給一個 noop 變數來觸發內容渲染:
{{ $noop := .Content }}
{{ .Store.Get "mykey" }}
你也可以使用其他方法來觸發內容渲染。請參見下一個常見問題。
哪些頁面方法會觸發內容渲染?
以下是會觸發內容渲染的 Page
物件方法:Content
、ContentWithoutSummary
、FuzzyWordCount
、Len
、Plain
、PlainWords
、ReadingTime
、Summary
、Truncated
和 WordCount
。