高木のブログ

【Heroku】Railsアプリで使用するデフォルトのNodeバージョンが16.13.1になった

2022/02/09

問題

いつも通り Heroku に Rails アプリをデプロイしたら、node-sass のビルドでエラーになった

-----> Installing dependencies
       Installing node modules (yarn.lock)
       yarn install v1.22.17
       [1/4] Resolving packages...
       [2/4] Fetching packages...
       [3/4] Linking dependencies...
       warning "admin-lte > [email protected]" has incorrect peer dependency "[email protected]^3.1.1".
       warning "admin-lte > [email protected]" has unmet peer dependency "[email protected]^0.5.31".
       warning "admin-lte > [email protected]" has unmet peer dependency "[email protected]".
       warning " > [email protected]" has unmet peer dependency "[email protected] - 3".
       [4/4] Building fresh packages...
       error /tmp/build_6ce51877/node_modules/node-sass: Command failed.
       Exit code: 1
       Command: node scripts/build.js

原因

どうやらデフォルトの Node バージョンが変わったらしい(ついでに Yarn も)
Ruby apps now default to Node version 16.13.1 and Yarn version 1.22.17 | Heroku Dev Center

  • Node バージョン 16.13.1
  • Yarn バージョン 1.22.17

デプロイのログを見ると、16.13.2 になってるけどこれは気にしないでおく

-----> Installing binaries
       engines.node (package.json):  unspecified
       engines.npm (package.json):   unspecified (use default)
       engines.yarn (package.json):  unspecified (use default)
       
       Resolving node version 16.x...
       Downloading and installing node 16.13.2...
       Using default npm version: 8.1.2
       Resolving yarn version 1.22.x...
       Downloading and installing yarn (1.22.17)
       Installed yarn 1.22.17

Node 16系で node-sass のビルドがエラーになる件についてはスコープ外とする

解決方法

package.json で使いたい Node バージョンを指定してあげたら良い

https://devcenter.heroku.com/articles/ruby-support#installed-binaries

diff --git a/package.json b/package.json
index 923f51c..2d48b74 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,9 @@
     "webpack-cli": "^3.3.12"
   },
   "version": "0.1.0",
+  "engines": {
+    "node": "14.17.5"
+  },
   "devDependencies": {
     "webpack-dev-server": "^4.6.0"
   },

ytkg

Written by ytkg, Twitter, GitHub