いつものようにrails serverを実行したとき、JavaScriptエラーに遭遇してしまったときの解決法
JavaScript runtime
エラーメッセージは以下
terminal
$rails server
︙
/home/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect'
: Could not find a JavaScript runtime.
See https://github.com/rails/execjs for a list of available runtimes.
(ExecJS::RuntimeUnavailable)
ログを見ると丁寧にGithubのページリンクが載っている。
読み解くと、どうやらGemfileにtherubyracerというgemを追加してあげればよさそうだ。
gemfile
︙
gem 'therubyracer'
でbundle update後、再度実行
terminal
$ bundle update
$ rails server
︙
/home/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-4.2.6/lib/active_support/core_ext/numeric/conversions.rb:131:in
`block (2 levels) in <class:Numeric>': stack level too deep (SystemStackError)
今度は別のエラーとなってしまった
stack level too deep
解決方法は[こちら](https://stackoverflow.com/questions/41504106/ruby-2-4-and-rails-4-stack-level-too-deep-systemstackerror)に載っていた。 今回はrailsのversionを4.2.6で実行していたが、4.2.8に変更することで解決しそうだ。ということでGemfileを編集する。
Gemfile
︙
gem 'rails', '4.2.8' → '4.2.6'に修正
再びbundle updateをして実行
これで解決できた。