Next.js+Vercelでsitemap.xmlを用意する


前回 sitemap.xml を作成しましたが、Vercel(旧 Zeit / now)でうまく動かなかったので原因と解決方法を追記しておきます。

自サーバーで動かす分には問題ないです。

Vercelの場合の問題と解決

サイトマップ読み込まないなと思ってたらアクセスできなくなってました。

NO_RESPONSE_FROM_FUNCTION

 

前回作ったのは getServerSideProps を使ったサーバー関数です。

ビルドファイルも lambda になっています。

サーバーに置いて next start する分には問題ないんですが、vercel に置く場合には上手く動かないようです。まぁ考えてみたら fs で好き勝手されるのは不味い。

 

というわけで静的ファイルに書き出して public/ に置くことにします。

ts-node で単体スクリプトを実行しています。

tsconfignext.js と同じものだと動かなかったので、"module": "commonjs" に変更したものを --project で指定。

 

サーバー関数ではなくなったので自動で最新になりませんが、そもそも静的ファイルでも特に問題はないです。

Vercel 側でなくクライアント側で実行する必要があるので、プッシュ前に実行して最新化するようにコマンドを作っておけば楽だと思います。


コメントを残す

メールアドレスが公開されることはありません。