Nuxt3の開発環境をDockerで構築したら[vite-node] [ERR_LOAD_URL] ..vueエラーになった

2023/06/16

Nuxt3のプロジェクトをローカルのDocker環境で新しく作成して、yarn dev -o で起動してブラウザからアクセスしたところエラーになったので、解決方法を調べて対応しました。

今回の環境の各種バージョンは下記のバージョンです。

各種バージョン

・Nuxt : 3.5.2

・Node.js: v18.14.2

・Docker : 20.10.23

vite-node ERR_LOAD_URL ..vueエラーについて

[vite-node] ERR_LOAD_URL ..vueエラー

ブラウザにアクセスすると、画像の画面が表示され [vite-node] [ERR_LOAD_URL] ..vue と表示されました。

プロジェクト作成して起動しただけなのに起動しないなんて…。

エラーが起きたときのDockerの設定

エラーが発生したときの Dockerfiledocker-compose.yml は下記のようにしていました。

Dockerfile

FROM node:18.14

ENV TZ Asia/Tokyo

WORKDIR /app

RUN apt-get -y update && \
    apt-get install -y git && \
    apt-get install curl -y && \
    npm install -g npm@latest nuxi nuxt3 && \
    yarn install

EXPOSE 3000

docker-compose.yml

version: "3.9"

services:
  leafy:
    container_name: front_app
    build: .
    volumes:
      - ./app/front_app:/app
      - /app/front_app/node_modules
    working_dir: "/app"
    ports:
      - "3010:3000"
     tty: true
    environment:
      - HOST=0.0.0.0
      - port=3000
      - CHOKIDAR_USEPOLLING=true
    command: sh -c "yarn dev -o"

エラーの原因について

エラーについて検索していたときに、下記のGithub Issueを見つけました。

[vite-node] ERR_LOAD_URL ..vue error in dev mode (Docker only)

まさにこれだ!というタイトルだったので、Googleで翻訳しながら読み解いていくと、workdirapp から frontend に変えたら解決できたというコメントがありました。

詳しくはわかっていないのですが、エラーの原因は Nuxt ではなく vite にあって、 vite が app/app.vueapp.vue にしてしまうみたいなことが書いてありました。

解決方法

Github Issue のおかげで解決方法がわかったので、早速 workdirapp から frontend へ変更。

workdirapp じゃなければ大丈夫そうです

変更後のdocker-compose.yml

version: "3.9"

services:
  leafy:
    container_name: front_app
    build: .
    volumes:
      - ./app/front_app:/frontend  # ここを変更
      - /app/front_app/node_modules
    working_dir: "/frontend"       # ここを変更
    ports:
      - "3010:3000"
     tty: true
    environment:
      - HOST=0.0.0.0
      - port=3000
      - CHOKIDAR_USEPOLLING=true
    command: sh -c "yarn dev -o"

workdir を変更して再起動

[vite-node] ERR_LOAD_URL ..vueエラー解決後

再起動後、ブラウザからアクセスすると無事に Nuxt の Welcome 画面が表示されました!

英語の Github Issue でも諦めないで読んで良かったですw