Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9134

CircleCI で Node.js のバージョンが合わない(2019年11月)

$
0
0

なにがおきた

CircleCIのruby:2.6.5-node-browsersを使ったジョブでこんなエラーが出た。

yarn install v1.19.1
[1/5] Validating package.json...
error hogehoge@0.1.0: The engine "node" is incompatible with this module. Expected version "~10.16.0". Got "12.13.0"
error Found incompatible module.

package.jsonでは 10.16.0が指定されてるけど 12.13.0が使われてるとのこと。

原因

さっき(2019-11-07現在) CircleCIのdockerイメージの Node のバージョンが軒並み上げられた。この更新で-nodeとかついてるイメージのバージョンが 10.16.3 -> 12.13.0になった。10月21日に12系がLTSになったかららしい。(Convenience Image Node Variants will be updated to v12.x on November 4th - CircleCI Discuss)

対策

12.13.0にしちまえ!!!!

package.json
   "engines": {
-    "node": "~10.16.0"
+    "node": "~12.13.0"
   },

もしくは、うまくいってた時のdocker image id を指定する

のっぴきならない理由で 10.16のままにする場合、ベストプラクティス - Pre-Built CircleCI Docker Imagesにある方法でうまくいった。

また、使用するイメージを特定の SHA に至るまで指定することができます。 これにより、変更が加えられるまでの間、特定のイメージをテストすることができます。

使用するイメージを細かく指定するには、以下の 2つの方法があります。

  • タグを使用してイメージのバージョンや OS を指定する
  • Docker イメージ ID を使用してバージョンを指定する

うまくいってた時のCircleCIのジョブのログを確認するとその時に使われてたDockerイメージIDが出力されてるのでそれをコピって指定したら古いのが使われた。以下は ruby:2.6.5-node-browsersの例。しばらくこれでしのいでおいて、その間に12系を使えるようにするのがよさそう。

Dockerhub でタグの履歴の追い方がわからなかった。わかったら追記する。

.circleci/config.yml
     docker:
-      - image: circleci/ruby:2.6.5-node-browsers
+      - image: circleci/ruby@sha256:7b5eede6785426c86fd08328a2b98b54b7bf67cdbd7d579c9b792e11f6bea8ed

もしくは、自分でdockerfile書く。


Viewing all articles
Browse latest Browse all 9134

Trending Articles