😎

【解決】リロードでエラー!? ReactとExpressで404エラーになってしまった。。。

2024/09/02に公開

React、Expressでフロントエンドを開発している際、ブラウザをリロードをすると404エラーが生じてしまいました。

今回解決できたので、解決策と原因を振り返っておこうと思います!

解決策(ソースコード)

サーバーのルーティングの部分で、下記のコードを追加してみてください。

const path = require('path');

app.get('/*', (req, res) => {
    res.sendFile(path.join(<index.htmlへのパス>));
})

意図しない404エラーが起こる原因

問題は、特定のURLへ直接アクセスしてしまうことだったんです。

サーバーが送っているのは基本的にhtmlのみで、特定のURLに応じてコンポーネントを表示しているためだったのですよ。

クライアントだけが知ってて、サーバーはどんなURLか知らない状態になり、結果としてindex.htmlが送られない→404エラーとなるのですね!

じゃあ、サーバーが全てのエンドポイントに対してindex.htmlを返してあげれば404エラーも起きないだろう。ということで上記のルーティング処理を追記してみてください(^^)

Discussion