LoginSignup
2
2

More than 1 year has passed since last update.

Webpackerでerror Command "webpack-dev-server" not foundになる

Last updated at Posted at 2022-01-19

はじめに

最近Railsの開発環境を作成しています。
こちらの記事で構築手順を載せています。

そこで、GitにリポジトリをあげたコードをCloneして起動したところうまく起動できない事態が発生したため手直しのさいに解決した方法をまとめます。また、この記事とは別にWebpackerの問題がもう一つ起きています。
以下の記事から確認ください。

問題

DockerでWebpackerを環境を作成して起動したところ以下のエラーが発生しました。

webpacker_1  | error Command "webpack-dev-server" not found.

何度か起動するとエラーが消えて、git cloneしてくると初回は発生しました。

解決方法

これはyarn installされた際に自動生成される/node_modulesがないためにおこるエラーです。
本来であればWebpackerコンテナの中にyarn installされた時点で/node_modules/webpack-dev-serverが作成されます。しかし、Git clone時はローカルにnode_modulesが存在しないため(gitignoreされているため)ファイルマウントがおきずにこのようなエラーになります。

そこで、Dockerfile内でyarn installをすることでエラーを解決しました。

FROM ruby:alpine3.13

ARG UID

RUN adduser -D app -u ${UID:-1000} && \
      apk update \
      && apk add --no-cache gcc make libc-dev g++ mariadb-dev tzdata nodejs~=14 yarn

WORKDIR /myapp
COPY Gemfile .
COPY Gemfile.lock .
RUN bundle install
COPY --chown=app:app . /myapp
RUN yarn install # 追加
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
# EXPOSE 3000
# CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]

USER app
RUN mkdir -p tmp/sockets
RUN mkdir -p tmp/pids

そして、このコンテナ内で作成されたnode_modulesを使えばよいのですが、docker-compose.ymlでボリュームを設定していないとコンテナ内のnode_modulesは勝手に削除されます。

【Docker】docker compose upするとnode_modulesがマウントされて消える問題

こちらの記事通りにdocker-compose.ymlvolumesマウントして消えないようにします。
またRailsコンテナでもnode_modulesは必要なので(yarn installしたライブラリを利用するので)、こちらにもvolumeを追加します。

docker-compose.yml
version: "3.3"
services:
  rails:
    build: .
    container_name: rails
    command: bundle exec puma -C config/puma.rb
    volumes:
      - .:/myapp
      - public-data:/myapp/public
      - tmp-data:/myapp/tmp
      - log-data:/myapp/log
      - /myapp/node_modules # 追加
    env_file:
      - .env
    depends_on:
      - db
    environment:
      WEBPACKER_DEV_SERVER_HOST: webpacker

  webpacker:
    build: .
    volumes:
      - .:/myapp
      - /myapp/node_modules # 追加
    command: ./bin/webpack-dev-server
    environment:
      WEBPACKER_DEV_SERVER_HOST: 0.0.0.0
    ports:
      - "3035:3035"

おわりに

yarnやpackage.jsonについて初めて勉強したのでかなり沼りました。
また、ネットにもほしい情報はなく検証をかなりして解決することができました。
このあとにWebapackのCSSやVueが読み込まれなかったり、Template Errorが発生するトラブルを解決していますので困った方は確認してみてください。

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2