nuxt + axios の本番環境で localhost に行ってしまう問題

nuxt で axios 使っていると、フロントエンドの通信が、localhost:3000 に向かってしまいうまく動かないということがありました。
調べていくと、BaseURL だったり API_URL だったりを設定すれば良い・・・とのことですが、色々と不都合でした・・・。

作成したアプリケーションは、事前に nuxt build して、静的ファイルとして nginx で配信するつもりなのです。
この時点では配信するURLは決まっていません。Dockerイメージにして、任意のURLで配信できるようにしたいので、ビルド時点で確定することは難しいです。

axios で調べると、ブラウザで動かす分には BaseURL=”/” で動くよ、という情報があったので、試してみたところ、良い感じでした。
SSRの時はこれだとまずいと思うので、SSR利用時は、ブラウザとサーバでBaseURLを変えるようにすれば良いかと思われます。

Dockerビルド時はこちらのように、 API_URLで”/” を指定してビルド・・・(マルチステージビルド)してます。

FROM node:13 as frontend
ADD . /work
WORKDIR /work
ENV API_URL=/
RUN yarn install && yarn build

これを、次のように公開用のイメージで取り込んだ所・・・

COPY --from=frontend /work/dist /app/public

いい感じに動きました!やったね。

コメント

タイトルとURLをコピーしました