以前構築した Docker + Nginx + Node.js環境でAPIを叩く時にプチハマりしたことを書きます。
環境は↓
やりたいこと
getServerSideProps内とNextPage内それぞれでAPIを叩きたい。
やったこと
NextPage内
エンドポイントがlocalhost:8080/api/get-hogeであるとする。
const res = await fetch('http://localhost:8080/api/hoge',
{
method: 'GET',
// 略
});
こちらはうまくいきました。が、
getServerSideProps内
.ts
const res = await fetch('http://localhost:8080/api/hoge',
{
method: 'GET',
// 略
});
こっちは
Server Error / Error: connect ECONNREFFUSED ~~って出ちゃいました
調べていると、クライアントサイドとサーバーサイドで叩くドメインを変えないいけないようなので、
const res = await fetch('http://host.docker.internal:8080/api/hoge',
{
method: 'GET',
// 略
});
これでできました。
参考