【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 "bootstrap@^3.1.1".
warning "admin-lte > [email protected]" has unmet peer dependency "moment-timezone@^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"
},