さくらVPS Ubuntu22.04 にて、Rails でPrecompile がなかなかできませんでした。そのときにエラー解消した方法を備忘録として残しておきます。
エラー環境
- さくらVPS
- Ubuntu22.04
- Ruby3.1.3
- Rails 6.1.7.2
- Node-js 18.14.0
目次
NODE_OPTIONS=–openssl-legacy-providerが必要
Railsプロジェクトを新規作成し、precompileを実行します。
$ cd ~
$ rails new railsSample
$ cd railsSample
$ bundle exec rake assets:precompile RAILS_ENV=production
webpacker 5.4.4 はないと言われました。なので、6.0.0-rc6 をインストールしました。
再度、precompileします。
$ bundle exec rake assets:precompile RAILS_ENV=production
↓のエラーが発生しました。
/home/ubuntu/railsSample/node_modules/webpack-cli/bin/cli.js:93
throw err;
TypeError: Cannot read properties of undefined (reading 'toWebpackConfig')
at Object. (/home/ubuntu/railsSample/config/webpack/production.js:5:30)
インストールするwebpacker を5.4.3 に変更して、再度コンパイルしてみました。
$ bundle exec rake assets:precompile RAILS_ENV=production
今度は、別のエラーが発生しました。
~ 略 ~
this[kHandle] = new _Hash(algorithm, xofLen);
~ 略 ~
Error: error:0308010C:digital envelope routines::unsupported
いろいろ調べた結果、↓のコマンドを実行するとエラー解消できました。Node.js のバージョンが17以上だと、環境変数の設定が必要なようです。
$ bundle exec rake assets:precompile RAILS_ENV=production NODE_OPTIONS=--openssl-legacy-provider
コンパイルででました。
Built at: 02/23/2023 5:47:52 AM
Asset Size Chunks Chunk Names
js/application-3055a888c29068a9ff25.js 68.3 KiB 0 [emitted] [immutable] application
js/application-3055a888c29068a9ff25.js.br 15.2 KiB [emitted]
js/application-3055a888c29068a9ff25.js.gz 17.5 KiB [emitted]
js/application-3055a888c29068a9ff25.js.map 203 KiB 0 [emitted] [dev] application
js/application-3055a888c29068a9ff25.js.map.br 43.2 KiB [emitted]
js/application-3055a888c29068a9ff25.js.map.gz 49.9 KiB [emitted]
manifest.json 364 bytes [emitted]
manifest.json.br 127 bytes [emitted]
manifest.json.gz 142 bytes [emitted]
Entrypoint application = js/application-3055a888c29068a9ff25.js js/application-3055a888c29068a9ff25.js.map
[3] ./app/javascript/packs/application.js 480 bytes {0} [built]
[4] ./app/javascript/channels/index.js 205 bytes {0} [built]
[5] ./app/javascript/channels sync _channel\.js$ 160 bytes {0} [built]
+ 3 hidden modules
コメント