Deploying Multiple Instances for Next.js

年始に立てた目標『SFC会員になる!』も達成してしまい、そろそろちゃんとデベロッパーに戻るかーと思いリハビリながらメモを上げていこうと思う。

最近、v2.0もリリースされたことだし、Next.jsを触っている。ほぼゼロ設定で、サーバーサイドでReactをレンダリングできたり、ルーティングがめちゃ簡単だったり、今のところいい感じである。

An unexpected error has occurred.

ローカルで開発をしているときは問題ないんだいけど、本番環境でたまに、というか、けっこうな確率でエラーページが表示されていて、なんでだろう?とログを見てみたら、

BUILD_IDちゃうやんけー!と怒られていた。

ご丁寧にもWikiに書いてあった。

Next.jsの起動コマンドはnext build; next startって感じでbuildコマンドを打ってから起動するのだけど、要は複数のインスタンスで毎回buildコマンドが走って、その度に にユニークなBUILD_IDが生成されて、インスタンス間で異なるものになっちゃってる話だと理解した。

というわけで、ユーザー側で任意のIDで上書きしてやればいい。WikiにあるようにGitのコミットIDとか利用すればいいっぽい。

next build && echo $(git rev-parse HEAD) > .next/BUILD_ID

というわけで、こうゆう感じで書いたのだけど、GAE/Node.jsの環境ではうまくいかなかった。

next build && echo $GAE_VERSION > .next/BUILD_ID

めんどくさかったので、GAEの環境変数GAE_VERSIONBUILD_IDとして利用したら、エラーが表示されなくなったヽ(=´▽`=)ノ

Next.js使ってる人、情報共有していきましょう。