前提・実現したいこと
ヘッドレスCMSとNext.jsでブログサイトを作成しています。
Next.jsを公開した後(build)に、CMSにコンテンツを追加すると、追加されたコンテンツのページが生成されません。
ページ一覧画面(index.tsx)では、追加されたデータが表示されるのですが、リンク先が生成されていないため遷移しようとすると404エラーが発生します。ちなみに、getStaticPropsではなく、useSWRを使ってコンテンツを取得しています。
ヘッドレスCMS(セルフホスティング)は、renderでホストしています。
Next.jsはvercelでホストしています。
Next.js側の[slug].tsxのコードは下記のようになっています。
page/[slug].tsx
tsx
1import { GetStaticProps, GetStaticPaths } from 'next' 2import { Layout } from '../../components/templates/Layout' 3import { getSinglePost, getPosts } from '../../lib/cms' 4import { Blog } from '../../components/pages/Blog'; 5 6 ... 7 8const PostPage = (props: BlogProps) => { 9 return ( 10 <div> 11 <Layout> 12 <Blog post={props.post} /> 13 </Layout> 14 </div> 15 ) 16} 17 18export const getStaticProps: GetStaticProps = async (context: any) => { 19 const post = await getSinglePost(context.params.slug) 20 21 if (!post) { 22 return { 23 notFound: true, 24 } 25 } 26 27 return { 28 props: { post } 29 } 30} 31 32export const getStaticPaths: GetStaticPaths | any = async () => { 33 try { 34 const posts = await getPosts() 35 const paths = posts.map((post) => ({ 36 params: {slug: post.slug} 37 })) 38 39 return { paths: paths, fallback: false } 40 } catch (err) { 41 } 42}
SSRにしたほうがいいのでしょうか。
CMS側のコンテンツが追加されたときに、Next.jsのほうで自動buildさせることは可能でしょうか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。