はじめに
homebrewを使用したnodeが11/2をもってnode 16.〇のバージョンの対応が終了したようなので、従来のやり方だとnodeのバージョンを16.〇〇に下げることができなくなってしまいました。
そこで試行錯誤してnodeのバージョンを16.〇〇に下げ、pushができたので共有します。
主にnodeのバージョンが22.〇〇になるMacユーザー向けの記事なので、windowsユーザーは見なくて大丈夫です。
環境
・Mac
・node22.〇〇
・herokuリリース(push)の際、 Error: error:0308010C:digital envelope routines::unsupported/ERROR in ./app/javascript/packs/application.jsで止まっている
解決策
現在紐づいているインストール済みのバージョンを解除。
brew unlink node
以下のコマンドでnode16をインストール
brew link --overwrite node@16
続いて以下のコマンドを入力
arch -arm64 brew install node@16
以下を実行して nvm を有効化します
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
nvm を使って Node.js のバージョンを指定してインストールします:
nvm install 16
Node.js 16 をデフォルトバージョンとして使用するため以下を記入
nvm alias default 16
nodeのバージョンを確認
node -v
ここで16.〇〇と表示されたら完了
nodeのバージョンが16になったら
package.jsonファイルを編集する。以下を付け加える。このとき、先程確認したnodeとnpmのバージョンを指定する。
package.json
"engines": {
"node": "16.20.0",
"npm": "8.19.4"
}
これを下記のように追記しよう。enginesのすぐ上の } に" , "を付けないとエラーが出るよ!
package.json
{
"name": "webrender",
"private": true,
"dependencies": {
"@rails/actioncable": "^6.0.0",
"@rails/activestorage": "^6.0.0",
"@rails/ujs": "^6.0.0",
"@rails/webpacker": "5.4.3",
"turbolinks": "^5.2.0",
"webpack": "4.46.0",
"webpack-cli": "3.3.12"
},
"version": "0.1.0",
"devDependencies": {
"@babel/plugin-proposal-private-methods": "^7.18.6",
"@babel/plugin-proposal-private-property-in-object": "^7.21.0",
"babel-loader": "^8.2.2",
"webpack-dev-server": "3"
},
"engines": {
"node": "16.20.0",
"npm": "8.19.4"
}
}
変更したファイルをステージングする。
git add .
ステージングされたファイルをコミットして、、
git commit -m "package.json fix"
最後に、herokuへプッシュ!
git push heroku master