RubyMine运行Rails 6.1测试报找不到JavaScript runtime错误
运行环境
- 操作系统:Ubuntu 20.04
- 应用:Rails 6.1 项目,搭载RSpec测试套件
- 开发工具:RubyMine 2022.1.3
- Ruby环境:rbenv管理,版本为3.0.3
- Node.js安装路径:
/home/alex/.nvm/versions/node/v16.13.0/bin/node
问题表现
通过RubyMine的以下入口执行操作时,均触发ExecJS::RuntimeUnavailable报错,提示找不到JavaScript运行时:
- 通过spec类运行配置启动测试
- 点击测试定义旁的运行图标启动测试
- 启动调试器
- 运行带覆盖率统计的测试
- 通过Run Anything入口执行Rails命令(如生成控制器)
仅通过Tools > bundle > install路径执行bundle install操作可正常运行,无报错。
测试运行报错日志
/bin/bash -c "env RBENV_VERSION=3.0.3 /home/alex/.rbenv/libexec/rbenv exec ruby -x /var/www/project/bin/bundle exec ruby /var/www/project/bin/rails spec" Testing started at 5:17 μ.μ. ... rails aborted! ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. /var/www/project/config/application.rb:17:in `<top (required)>' /var/www/project/Rakefile:9:in `require' /var/www/project/Rakefile:9:in `<top (required)>' /var/www/project/bin/rails:4:in `require' /var/www/project/bin/rails:4:in `<main>' (See full trace by running task with --trace)
其他报错场景示例(控制器生成命令)
/bin/bash --login -c "env RBENV_VERSION=3.0.3 /home/alex/.rbenv/libexec/rbenv exec rails g controller home"
可正常执行的bundle install命令
/bin/bash -c "env RBENV_VERSION=3.0.3 /home/alex/.rbenv/libexec/rbenv exec bundle install"
已排查情况
- 该应用手动本地运行、线上部署均正常,无ExecJS相关报错
- 已尝试安装
execjs、mini_racer、libv8-node相关gem,问题未解决 - 同环境下打开其他搭载RSpec的Rails项目时,运行配置可正常执行。对比两类项目的执行命令发现:正常项目的运行命令会调用spring,异常项目的运行命令未调用spring,命令对比如下:
# 正常项目执行命令(调用spring) /bin/bash -c "env RBENV_VERSION=3.0.3 /home/alex/.rbenv/libexec/rbenv exec ruby -x /var/www/password_manager/bin/bundle exec ruby /var/www/password_manager/bin/spring rails spec" # 异常项目执行命令(未调用spring) /bin/bash -c "env RBENV_VERSION=3.0.3 /home/alex/.rbenv/libexec/rbenv exec ruby -x /var/www/project/bin/bundle exec ruby /var/www/project/bin/rails spec"
- 排查时当前环境下spring未运行
待确认问题
- 是否有开发者遇到过同类问题?
- 是否支持修改RubyMine执行任务时调用的命令?
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

