質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

GraphQL

GraphQL は、アプリケーション・プログラミング・インタフェース (API) 向けのクエリ言語およびサーバーサイドランタイムです。APIの速度、柔軟性、開発者にとっての使いやすさを向上させるために設計され、データを複数のデータソースから取得するリクエストを1つのAPI呼び出しで構成できます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

0回答

137閲覧

Next.js + dockerのwebサイトでWordpressを取得した時にビルドできない

lby7it

総合スコア0

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

GraphQL

GraphQL は、アプリケーション・プログラミング・インタフェース (API) 向けのクエリ言語およびサーバーサイドランタイムです。APIの速度、柔軟性、開発者にとっての使いやすさを向上させるために設計され、データを複数のデータソースから取得するリクエストを1つのAPI呼び出しで構成できます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2024/10/08 04:03

実現したいこと

docker環境下で作成したWordpressをヘッドレスCMSとして使用し、静的ファイルをビルドしたい。

前提

以下のサイトを参考に、Next.js + TypeScript + docker + Wordpress + GraphQL でwebサイトを作成しております。
https://zenn.dev/masahiro_dev/articles/migrate-wordpress-to-nextjs

その中で、お知らせ一覧から詳細ページにリンクするDynamic Routesの設定が原因で、ビルドした時にエラーが発生します。
↓以下補足
・dockerを起動した開発環境だと、問題なく詳細ページは表示されます。
・詳細ページ(/post/[slug])をファイルに含まなければ、ビルドできます。

発生している問題・エラーメッセージ

↓ビルドした時に以下のエラーが表示されます。
Collecting page data .TypeError: fetch failed
〜略〜
Build error occurred
Error: Failed to collect page data for /post/[slug]

該当のソースコード

お知らせ詳細ページの記述です。GraphQLを使用して取得しております。

export async function generateStaticParams() { const res = await fetch(`${process.env.WP_API_URL}?_=${new Date().getTime()}`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ query: ` { posts { nodes { slug } } } `, }), }); const { data } = await res.json(); if (!data || !data.posts) { console.error("No posts found"); return []; } const postSlugs = data.posts.nodes.map((post: { slug: string }) => ({ slug: post.slug, })); return postSlugs; } export default async function PostPage({ params, }: { params: { slug: string }; }) { const res = await fetch(`${process.env.WP_API_URL}`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ query: ` query GetPostBySlug($slug: String!) { postBy(slug: $slug) { title content date } } `, variables: { slug: params.slug, }, }), next: { revalidate: 10 }, }); const { data } = await res.json(); if (!data || !data.postBy) { return ( <div> <p>お知らせはありません。</p> </div> ); } const post = data.postBy; return ( <div> <h>{post.title}</h1> <p><time>{post.date}</time></p> <article className="article" dangerouslySetInnerHTML={{ __html: post.content }} /> </div> ); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問