В немного более старом проекте мы используем драгоценный каменьautoprefixer-rails (а не webpacker). После обновления версии 10 в CI появились следующие ошибки:

ActionView::Template::Error:
   Autoprefixer doesn’t support Node v8.10.0. Update it.

Я не понимал, как это могло случиться. Мы используем NVM для автоматической установки и настройки версий узлов. Так что я ожидал, что это будет 10.22.1 вместо 8.10.0.

Я обнаружил, чтоExecJS автоматически определяет версию узла в системе. Вы можете запустить ExecJS::Runtimes.autodetect в консоли Rails, чтобы увидеть, что он выбрал. Интересно, что это подсказало, что пошло не так:

irb(main):007:0> ExecJS::Runtimes.autodetect
=> #<ExecJS::ExternalRuntime:0x00000000037449d0 @name="Node.js (V8)", @command=["nodejs", "node"], @runner_path="/home/semaphore/[redacted]/vendor/bundle/ruby/2.7.0/gems/execjs-2.7.0/lib/execjs/support/node_runner.js", @encoding="UTF-8", @deprecated=false, @binary="nodejs", @popen_options={:external_encoding=>"UTF-8", :internal_encoding=>#<Encoding:UTF-8>}>

Порядок команд был для меня неправильным (@command=["nodejs", "node"]):

semaphore@semaphore-vm:~/[redacted]$ nodejs -v
v8.10.0
semaphore@semaphore-vm:~/[redacted]$ node -v
v10.22.1

Переключение на главную ветку ExecJS устранило проблему, так как здесь был изменен порядок: https://github.com/rails/execjs/commit/f6dc08c58ab4e1a467f64d471ee6e0127c2f14de

На самом деле я сделал вилку https://github.com/renuo/execjs/tree/v2.7.0-renuo, которая должна работать для NVM (но не стандартных установок linux).