目錄
Next.js 靜態網站生產建置期間取得錯誤
了解錯誤
原因和解決方案
程式碼重構
結論
首頁 web前端 js教程 為什麼我在 Next.js 靜態網站生產建置過程中出現取得錯誤?

為什麼我在 Next.js 靜態網站生產建置過程中出現取得錯誤?

Dec 30, 2024 pm 07:55 PM

Why Do I Get Fetch Errors During My Next.js Static Website Production Build?

Next.js 靜態網站生產建置期間取得錯誤

在生產中建置Next.js 網站時,您可能會遇到在執行時不會發生的取得錯誤發展模式。這可能會令人沮喪和困惑。

了解錯誤

錯誤訊息「FetchError: invalid json response body at ...」通常表示 API 路由回傳的 JSON 回應存在問題。具體來說,錯誤「JSON 中位置 0 處出現意外的令牌 T」表示伺服器傳回了無效的 JSON 資料。

原因和解決方案

呼叫內部 API 路由

在 Next.js 中,避免在 getStaticProps 中呼叫內部 API 路由至關重要。內部 API 路由在建置時不可用,因為伺服器尚未啟動。

解決方案: 將 getStaticProps 中的 API 路由呼叫替換為執行必要操作的直接伺服器端程式碼資料擷取。

絕對 URL fetch

如果從 next.config.js 中刪除 assetPrefix,請確保 fetch 中使用的 URL 是絕對的。相對 URL 在生產版本中可能無法運作。

解決方案:修改 fetch 呼叫以使用絕對 URL。

程式碼重構

這裡是重構的您的程式碼版本可以避免錯誤:

// pages/product/[slug]
import db from '../../../data/products'

// Remaining code...

export const getStaticProps = async ({ params: { slug }, locale }) => {
  const result = db.filter(item => item.slug === slug);
  const data = result.filter(item => item.locale === locale)[0];
  const { title, keywords, description } = data;
  return {
    props: {
      data,
      description,
      keywords,
      title,
    },
  };
};

export const getStaticPaths = async () => {
  const paths = db.map(({ slug, locale }) => ({ params: { slug }, locale }));
  return {
    fallback: true,
    paths,
  };
};
登入後複製

結論

透過了解Next.js 生產建置期間取得錯誤的原因並應用適當的解決方案,您可以確保靜態網站的成功部署。請記得避免在 getStaticProps 中呼叫內部 API 路由,在 fetch 中使用絕對 URL,並且偏好在生產建置中使用直接伺服器端程式碼來取得資料。

以上是為什麼我在 Next.js 靜態網站生產建置過程中出現取得錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在JavaScript中替換字符串字符 在JavaScript中替換字符串字符 Mar 11, 2025 am 12:07 AM

在JavaScript中替換字符串字符

jQuery獲取元素填充/保證金 jQuery獲取元素填充/保證金 Mar 01, 2025 am 08:53 AM

jQuery獲取元素填充/保證金

jQuery檢查日期是否有效 jQuery檢查日期是否有效 Mar 01, 2025 am 08:51 AM

jQuery檢查日期是否有效

10個jQuery手風琴選項卡 10個jQuery手風琴選項卡 Mar 01, 2025 am 01:34 AM

10個jQuery手風琴選項卡

10值得檢查jQuery插件 10值得檢查jQuery插件 Mar 01, 2025 am 01:29 AM

10值得檢查jQuery插件

HTTP與節點和HTTP-Console調試 HTTP與節點和HTTP-Console調試 Mar 01, 2025 am 01:37 AM

HTTP與節點和HTTP-Console調試

自定義Google搜索API設置教程 自定義Google搜索API設置教程 Mar 04, 2025 am 01:06 AM

自定義Google搜索API設置教程

jQuery添加捲軸到Div jQuery添加捲軸到Div Mar 01, 2025 am 01:30 AM

jQuery添加捲軸到Div

See all articles