6
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Heroku で Rails/webpacker のコンパイルに失敗する

何が起きたか

Heroku にデプロイした Rails アプリが webpacker.gemrake assets:precompile で失敗するようになった。こんなエラーが出る。

error upath@1.0.2: The engine "node" is incompatible with this module. Expected version ">=4 <=9". Got "10.14.1"

webpacker がどこかで依存している upath のバージョンが古く、 Node.js の 4.x から 9.x までのサポートしかなかったので失敗していた。

原因

Heroku で使われるデフォルトの Node.js が2019年に入って 8.x から 10.x になってたみたい。

Heroku Node.js Supportを見ると、以下のような記述があった。

If you don’t specify a version, the latest Long-Term-Support release will be used.

Heroku の Node は特にバージョンを指定しないと最新のLTSリリースを使うらしい。そこでNode.js Release Working Group の LTS(Long Time Support)スケジュールをチェックすると、以下の表があった。8.x系は2019年1月1日から Active LTS から Maintenance LTS になってる。

解決方法

  • デプロイしたい Rails アプリで yarn upgrade すれば upath のバージョンも上げてくれるので Node.js 10.x 系でも動くようになる。
  • もしくは Node.js のバージョンを固定する。

長期的には前者、短期的には後者の方法が安全かな。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
6
Help us understand the problem. What are the problem?