1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cloudflare Pages,Next.jsのApp Router Dynamic Routesで本番環境だけtxtファイルが表示されるときの対処法

Last updated at Posted at 2023-08-20

実行環境

  • Next.js 13.3.1
  • Cloudflare Pagesにdeploy

発生したこと

Dynamic Routesの設定

app
├── articles
│   └── [target_date]
│       └── page.tsx
├── favicon.ico
├── globals.css
├── layout.tsx
└── page.tsx

ローカルと本番環境の挙動の違い

ローカル

https://example.pages.dev/articles/2023-08-20
  • ローカルの開発環境では問題なく見れている

本番(Cloudflare pagesのプレビュー環境)

  • Cloudflare pagesのプレビュー環境でDynamic Routesで設定したurlにアクセスすると拡張子txtが追加されてしまい、Page not foundになる
https://example.pages.dev/articles/2023-08-20.txt

原因

ちゃんと調査していないので間違っているかもしれません。

CleanShot 2023-08-21 at 07.43.55.png

  • スクショはCloudflare Pagesのビルドログ
  • Dynamic RoutesはServer Side Rendering
22:42:42.150	▲  λ  (Server)  server-side renders at runtime (uses getInitialProps or getServerSideProps)
22:42:42.150	▲  ○  (Static)  automatically rendered as static HTML (uses no initial props)
  • λはSSR、○ は静的生成の意味

対処法

app/[target_date]/page.tsx

export async function generateStaticParams() {
    // "2023-08-20", "2023-08-19", "2023-08-18"だけ静的生成
  return ["2023-08-20", "2023-08-19", "2023-08-18"].map((d) => ({
    target_date: d,
  }));
}
export default async function Page({ params }: Props) {
  const { target_date } = params;
  return (
    <p>{targe_date}</p>
  );
}

CleanShot 2023-08-21 at 07.43.18.png

  • スクショはCloudflare Pagesのビルドログ
  • "2023-08-20", "2023-08-19", "2023-08-18"だけ静的生成されていることがわかる
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?