← 一覧へ戻る メモ

GitHub Pages へのデプロイでハマった話

サイト公開完了

無事、GitHub Pages でサイトを公開できました。

個人用ページなので致命的ではなかったものの、これが仕事だったらかなり焦っていたと思います。 今回の作業を通して、このサイト自体を検証環境として使うのも悪くないと感じました。

ハマった内容

ビルド中に、次のようなエラーが出ました。

TypeError: Cannot read properties of undefined (reading ‘replace’)

最初は原因が分からず、Astro の再インストールを試したり、コンポーネントを切り分けて最小構成にしたりしながら調査しました。

原因

原因は、TypeScript の型定義を曖昧にしていたことでした。

ページタイトルなどを pageInfo.ts で管理していたのですが、必要なプロパティまで optional にしてしまっていたため、undefined の可能性を残したままコードを書いていました。

その結果、ビルド時に undefined に対して .replace() が呼ばれ、エラーが発生していました。

反省点

TypeScript を探り探りで書いていると、今回のように「一見型が通っていても、実際には危ない状態」を作ってしまうと感じました。

型をきちんと定義しておくと、エラーの予防だけでなくコードの見通しも良くなるので、今後は optional を安易に増やしすぎないように気をつけたいです。