You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 7.1.3配置RSPEC 6.1.2时遇JavaScript runtime缺失问题求解决

解决Rails 7.1 + Docker环境下ExecJS运行时缺失问题

问题根源

虽然Rails 7默认采用Importmap/Turbo等无需Node.js的前端方案,但execjs gem仍需要JavaScript运行时才能工作——你的Docker镜像里既没预装JS运行时,且Ruby版本(Dockerfile里的3.1.2)和Gemfile指定的3.3.0不匹配,双重问题导致报错。

解决方案(二选一即可)

方案一:在Docker镜像中安装系统级JS运行时

修改你的Dockerfile,同步Ruby版本并安装Node.js:

# Dockerfile.rails
FROM ruby:3.3.0
# 更新系统包并安装Node.js(作为JavaScript运行时)
RUN apt-get update && apt-get install -y nodejs npm --no-install-recommends
# 清理缓存减小镜像体积
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# 安装Rails和Bundler
RUN gem install rails bundler

重新构建Docker容器后,ExecJS会自动检测到Node.js,即可正常执行rails generate rspec:install。

方案二:通过Gem提供JS运行时

如果不想在系统层面安装Node.js,可在Gemfile的development, :test组中添加mini_racer gem:

group :development, :test do
  gem "debug", platforms: %i[ mri mingw x64_mingw ]
  gem 'annotate'
  gem 'rspec-rails', '~> 6.1'
  # 添加mini_racer提供JavaScript运行时
  gem 'mini_racer'
end

执行bundle install后,ExecJS会使用mini_racer内置的V8引擎作为运行时,无需额外系统依赖。

内容的提问来源于stack exchange,提问作者user1185081

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:35:03