困ったこと
react-routerを使うことで、フロント側では1枚のhtmlファイルでルーティングをすることができます。
ただ、ローカル環境では問題なく動いたのですが、herokuにデプロイするとそのパスに応じたファイルを探してしまうようで動かず、少し嵌ってしまったので、記事にします。
解決方法
heroku-buildpack-staticを導入
static.jsonが怪しいということはぐぐるとすぐに出てきたのですが、それを使うにはheroku-buildpack-staticを導入する必要があるということに気づくのに時間がかかってしまいました。
heroku buildpacks:set heroku/nodejs
heroku buildpacks:add https://github.com/heroku/heroku-buildpack-static.git
static.jsonを追加
heroku-buildpack-staticを導入した上で、package.jsonと同じ階層にstatic.jsonを追加すれば、herokuでもしっかりとルーティングされるようになります。
static.json
{
"root": "public/",
"clean_urls": false,
"routes": {
"/**": "index.html"
}
}
参考
Deploying to Heroku
React Routing works in local machine but not Heroku