You need to enable JavaScript to run this app. Windows下Jekyll livereload报EventMachine错误,官方方案无效
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Jekyll livereload报EventMachine错误,官方方案无效

Windows PowerShell 下 Ruby 2.7 x64 Jekyll 启动 EventMachine 加载错误修复方案

以下方案针对执行gem uninstall eventmachine、gem install eventmachine --platform ruby后仍报cannot load such file -- 2.7/rubyeventmachine (LoadError)的场景,这类操作无效的核心原因是:bundler会自动为项目拉回带错误预编译二进制的eventmachine版本,全局安装纯Ruby版的操作不会覆盖项目依赖锁记录的旧版本。

操作步骤

  • 第一步:清理全量残留的eventmachine版本
    在Jekyll项目根目录(即执行jekyll new生成的、包含Gemfile的site2目录)打开终端,依次执行:
    bundle exec gem uninstall eventmachine -aIx
    gem uninstall eventmachine -aIx
    
    执行后运行gem list eventmachine,确认无残留版本输出。
  • 第二步:锁死项目内eventmachine的安装规则
    用文本编辑器打开项目根目录的Gemfile,在现有Jekyll相关gem声明行后追加一行:
    gem "eventmachine", "~> 1.2.7", require: false
    
    保存后回到终端,给当前项目单独配置eventmachine的安装平台为纯Ruby,避免bundler自动拉取mingw预编译包:
    bundle config set local.eventmachine --platform ruby
    
  • 第三步:重新安装项目依赖
    执行:
    bundle install
    
    安装完成后再次运行gem list eventmachine,确认输出的版本标注为ruby而非x64-mingw32。
  • 第四步:兜底启动配置(如果仍报C扩展加载错误)
    在项目根目录新建_plugins文件夹(如已存在则直接使用),在该目录下新建文件force_em_pure_ruby.rb,内容为:
    require 'em/pure_ruby'
    
    保存后再执行启动命令:
    bundle exec jekyll serve --livereload
    

常见无效原因排查

  • 系统默认PowerShell未加载Ruby Devkit的编译环境,导致纯Ruby版eventmachine实际编译失败,自动回退到预编译版:操作时优先通过RubyInstaller安装目录下的Start Command Prompt with Ruby启动终端,再执行上述步骤,不要直接用系统默认PowerShell。
  • 没有修改项目内的bundler配置,仅全局安装纯Ruby版eventmachine,项目依赖安装时会按照Gemfile.lock的记录拉回旧的预编译版本,可执行bundle update eventmachine刷新锁文件后重试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 08:06:04