OREMATOPEE

プログラミング、気になったこと、メモ書き...etc

Railsで発生したAutoprefixer doesn’t support Node v4.8.2. Update it.エラーについて【Docker Rails5 Bootstrap】

はじめに

DockerでRails開発を行っていたら急に下記のエラーが発生して、アプリが開けなくなった。 6f7d96c8994be656c8439daf32b138aa.png

まず、エラー文を見てみると「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

最後に

上記対応で正常にアプリ画面が表示された。 スクリーンショット 2020-11-05 7.52.30.png

めでたしめでたし。