TROUBLESHOOTING

常見問題 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" . }}
在範本中,:== 在賦值時有何不同?

使用 := 初始化變數,使用 = 為已初始化的變數賦值。請參見 詳細說明

為什麼我對列表頁面進行分頁時,頁面集合未按預期過濾?

你可能在同一頁面上多次調用了 PaginatePaginator 方法。請參見 詳細說明

為什麼有兩種方式來調用短代碼?

如果短代碼範本或短代碼標籤中的內容包含 Markdown,請使用 {{% shortcode %}} 記法。否則,請使用 {{< shortcode >}} 記法。請參見 詳細說明

我可以使用環境變數來控制配置嗎?

可以。請參見 詳細說明

為什麼我在每次構建後看到不同的輸出?

最常見的原因是頁面衝突(將兩個頁面發佈到相同的路徑)以及並發效應。使用 --printPathWarnings 指令列標誌來檢查頁面衝突,如果懷疑有並發問題,請在 論壇 上創建一個話題。

為什麼 Hugo 的開發伺服器無法檢測到文件變更?

在默認配置下,Hugo 的文件監視器可能無法在以下情況下檢測到文件變更:

  • 在 Windows 子系統 Linux (WSL/WSL2) 中運行 Hugo,且專案文件位於 Windows 分區上
  • 在可移動磁碟上本地運行 Hugo 且專案文件位於該磁碟
  • 在通過 NFS、SMB 或 CIFS 協議訪問的存儲伺服器上本地運行 Hugo

在這些情況下,請使用 --poll 指令列標誌來監控文件變更。例如,若要每 700 毫秒輪詢專案文件,請使用 --poll 700ms

為什麼我的頁面 Scratch 或 Store 中的值缺失?

ScratchStore 方法允許你在給定的頁面上創建一個 臨時區塊,來存儲和處理資料。這些值通常會在短代碼、由短代碼調用的部分範本中,或由 Markdown 渲染鉤子設置。在這三種情況下,臨時區塊的值直到 Hugo 渲染頁面內容之前是無法確定的。

如果你需要從父範本中訪問臨時區塊的值,且父範本尚未渲染頁面內容,你可以通過將返回的值賦給一個 noop 變數來觸發內容渲染:

{{ $noop := .Content }}
{{ .Store.Get "mykey" }}

你也可以使用其他方法來觸發內容渲染。請參見下一個常見問題。

哪些頁面方法會觸發內容渲染?

以下是會觸發內容渲染的 Page 物件方法:ContentContentWithoutSummaryFuzzyWordCountLenPlainPlainWordsReadingTimeSummaryTruncatedWordCount