現場で使えるRuby on Rails5速習実践ガイドを進めていて、P.99の http://localhost:3000/
にアクセスするところで ブラウザ上にExecJS::ProgramError
が表示されました。
解消するまでに苦労したので、記録しておきます。
エラー内容(ローカルホストアクセス時のrails serverログ)
Started GET "/" for ::1 at 2021-05-18 01:20:01 +0900
(0.4ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
↳ /Users/{ユーザ名}/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.5/lib/active_record/log_subscriber.rb:98
Processing by TasksController#index as HTML
Rendering tasks/index.html.slim within layouts/application
Rendered tasks/index.html.slim within layouts/application (17.5ms)
Completed 500 Internal Server Error in 1558ms (ActiveRecord: 0.0ms)
ActionView::Template::Error (TypeError: Cannot read property 'version' of undefined):
5: | Taskleaf
6: = csrf_meta_tags
7: = csp_meta_tag
8: = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
9: = javascript_include_tag 'application', 'data-turbolinks-track': 'reload'
10: body
11: .app-title.navbar.navbar-expand-md.navbar-light.bg-light
(execjs):1:213
(execjs):19:14
(execjs):1:40
app/views/layouts/application.html.slim:8:in `_app_views_layouts_application_html_slim___1532042825703924558_70301116723620'
試したこと(解消せず)
Nodeコマンドの確認
Node -v でバージョンが表示されるよう設定したが解消せず。
npm install eslint
「TypeError: Cannot read property 'version' of undefined」で検索して最初にヒットしたため実行したが解消せず。
Gemfileにcoffee-script-sourceを追加し、update
bundle update coffee-script-source
上記コマンドを実行したが解消せず。
サーバ再起動、PC再起動
解消せず。
解消した方法
bundle update execjs
bundle update autoprefixer-rails
原因
特定できず。(心当たりある方、ご教授ください。)
注意点
bundle update
でも解消しましたが、以下の注意点があるようです。
引数なしで行うと、それまでインストールされたgemのバージョン、つまりGemfile.lockを無視して、リモートで利用> 可能な最新のgemをinstallしてきて、依存関係の解決を行うことになります。
全てのgemに対して行う結果、相当数のgemのバージョンが変更されるので、今まで開発していたアプリケーションの挙動が変わってしまう可能性があります。
何の考えも無しにbundle updateを行うのはやめましょう!
そのため、開発の初段階である以外は、引数なしで実行するのは避けた方がよさそうです。
参考資料
「Windowsで...」とありますが、macでも同様の事象でしたので、参考にいたしました。