Railsで発生したAutoprefixer doesn’t support Node v4.8.2. Update it.エラーについて【Docker Rails5 Bootstrap】
はじめに
DockerでRails開発を行っていたら急に下記のエラーが発生して、アプリが開けなくなった。
まず、エラー文を見てみると「Autoprefixer doesn’t support Node v4.8.2. Update it.」と書かれており、翻訳するとAutoprefixerがNode v4.8.2に対応していません。アップデートしてください。」とのこと。
Node.jsのバージョンを下記コマンドを実行して確認してみると、エラー文のとおりv4.8.2らしい。
docker-compose run app nodejs -v v4.8.2
原因
調べているとBootstrapが原因であることがわかった。
Bootstrapのソースコードでは、ベンダープレフィックスを意図的に記載せず全てAutoprefixerというモジュールに任せており、このモジュールがNode.jsのバージョンv.4.8.2を受け付けないとのこと。
原因がわかればあとは対処するだけ! コンテナにあるNode.jsのバージョンを変更すれば解決するはず...
対処法
Railsコンテナを構成しているOSがdebian Linuxであり、そのdebianのパッケージ管理コマンド「apt」のapt-getコマンドで使用されるリポジトリ(ソフトウェアの取得元)を追加すればおk。
Dockerfileに記載しているNode.jsのapt-getの前に、バージョン10系のNode.jsリポジトリを追加する。
+ RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - RUN apt-get update -qq && \ apt-get install - y build-essential \ libpq-dev \ nodejs
これでバージョン10系のNode.jsがインストールされるようになった。
コンテナが動いていれば止めて、キャッシュを使わずに再ビルドを行ってから起動すればおk。
docker-compose stop
docker-compose build --no-cache
docker-compose up -d
最後に
上記対応で正常にアプリ画面が表示された。
めでたしめでたし。