為什麼我在 Next.js 靜態網站生產建置過程中出現取得錯誤?
Dec 30, 2024 pm 07:55 PMNext.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 DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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