重置电脑后无法本地运行已有Jekyll站点,寻求解决方案
GitHub Pages本地预览报错排查与解决
问题背景
电脑恢复出厂设置后,重新下载GitHub Pages站点代码仓库,按指南安装了ruby、jekyll和bundler。推送新博客文章到GitHub仓库正常,但执行bundle exec jekyll serve进行本地预览时出现报错。已添加webrick依赖,未执行jekyll new [myblog]命令,怀疑现有文件与新安装的版本存在冲突。
报错信息
⠠⠵ bundle exec jekyll serve /Users/adamg/.gem/ruby/3.1.3/gems/bundler-1.17.3/lib/bundler/shared_helpers.rb:29: warning: Pathname#untaint is deprecated and will be removed in Ruby 3.2. /Users/adamg/.gem/ruby/3.1.3/gems/bundler-1.17.3/lib/bundler/shared_helpers.rb:118: warning: Pathname#untaint is deprecated and will be removed in Ruby 3.2. /Users/adamg/.gem/ruby/3.1.3/gems/bundler-1.17.3/lib/bundler/shared_helpers.rb:118: warning: Pathname#untaint is deprecated and will be removed in Ruby 3.2. /Users/adamg/.gem/ruby/3.1.3/gems/bundler-1.17.3/lib/bundler/shared_helpers.rb:35: warning: Pathname#untaint is deprecated and will be removed in Ruby 3.2. /Users/adamg/.gem/ruby/3.1.3/gems/bundler-1.17.3/lib/bundler/shared_helpers.rb:35: warning: Pathname#untaint is deprecated and will be removed in Ruby 3.2. /Users/adamg/.gem/ruby/3.1.3/gems/bundler-1.17.3/lib/bundler/shared_helpers.rb:44: warning: Pathname#untaint is deprecated and will be removed in Ruby 3.2. /Users/adamg/.gem/ruby/3.1.3/gems/bundler-1.17.3/lib/bundler/shared_helpers.rb:118: warning: Pathname#untaint is deprecated and will be removed in Ruby 3.2. bundler: failed to load command: jekyll (/Users/adamg/.gem/ruby/3.1.3/bin/jekyll) LoadError: cannot load such file -- rexml/parsers/baseparser /Users/adamg/.gem/ruby/3.1.3/gems/kramdown-1.13.2/lib/kramdown/parser/html.rb:10:in `require' /Users/adamg/.gem/ruby/3.1.3/gems/kramdown-1.13.2/lib/kramdown/parser/html.rb:10:in `<top (required)>' /Users/adamg/.gem/ruby/3.1.3/gems/kramdown-1.13.2/lib/kramdown/parser/kramdown/html.rb:10:in `require' /Users/adamg/.gem/ruby/3.1.3/gems/kramdown-1.13.2/lib/kramdown/parser/kramdown/html.rb:10:in `<top (required)>' /Users/adamg/.gem/ruby/3.1.3/gems/kramdown-1.13.2/lib/kramdown/parser/kramdown/paragraph.rb:14:in `require' /Users/adamg/.gem/ruby/3.1.3/gems/kramdown-1.13.2/lib/kramdown/parser/kramdown/paragraph.rb:14:in `<top (required)>' /Users/adamg/.gem/ruby/3.1.3/gems/kramdown-1.13.2/lib/kramdown/parser/kramdown.rb:342:in `require' /Users/adamg/.gem/ruby/3.1.3/gems/kramdown-1.13.2/lib/kramdown/parser/kramdown.rb:342:in `<class:Kramdown>' /Users/adamg/.gem/ruby/3.1.3/gems/kramdown-1.13.2/lib/kramdown/parser/kramdown.rb:60:in `<module:Parser>' /Users/adamg/.gem/ruby/3.1.3/gems/kramdown-1.13.2/lib/kramdown/parser/kramdown.rb:19:in `<module:Kramdown>' /Users/adamg/.gem/ruby/3.1.3/gems/kramdown-1.13.2/lib/kramdown/parser/kramdown.rb:17:in `<top (required)>' /Users/adamg/.gem/ruby/3.1.3/gems/jekyll-3.5.2/lib/jekyll/converters/smartypants.rb:1:in `require' /Users/adamg/.gem/ruby/3.1.3/gems/jekyll-3.5.2/lib/jekyll/converters/smartypants.rb:1:in `<top (required)>' /Users/adamg/.gem/ruby/3.1.3/gems/jekyll-3.5.2/lib/jekyll.rb:11:in `require' /Users/adamg/.gem/ruby/3.1.3/gems/jekyll-3.5.2/lib/jekyll.rb:11:in `block in require_all' /Users/adamg/.gem/ruby/3.1.3/gems/jekyll-3.5.2/lib/jekyll.rb:10:in `each' /Users/adamg/.gem/ruby/3.1.3/gems/jekyll-3.5.2/lib/jekyll.rb:10:in `require_all' /Users/adamg/.gem/ruby/3.1.3/gems/jekyll-3.5.2/lib/jekyll.rb:186:in `<top (required)>' /Users/adamg/.gem/ruby/3.1.3/gems/jekyll-3.5.2/exe/jekyll:6:in `require' /Users/adamg/.gem/ruby/3.1.3/gems/jekyll-3.5.2/exe/jekyll:6:in `<top (required)>' /Users/adamg/.gem/ruby/3.1.3/bin/jekyll:25:in `load' /Users/adamg/.gem/ruby/3.1.3/bin/jekyll:25:in `<top (required)>'
当前Gemfile内容
source 'https://rubygems.org' gem "github-pages", '163', group: :jekyll_plugins # enable tzinfo-data for local build # gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw] gem 'jekyll-paginate' # gem "webrick", "~> 1.8" gem "webrick"
解决方案
1. 修复缺失的rexml依赖
报错核心是LoadError: cannot load such file -- rexml/parsers/baseparser,Ruby 3.0+版本已不再默认包含rexml库,而当前使用的旧版kramdown(1.13.2)依赖该库。需手动添加rexml到Gemfile:
gem "rexml"
执行bundle install更新依赖后,重新尝试运行预览命令。
2. 解决版本兼容性问题
- 当前安装的Ruby 3.1.3与github-pages 163对应的Jekyll 3.5.2、Bundler 1.17.3存在版本不兼容:旧版工具不支持Ruby 3.x的部分特性,导致出现
Pathname#untaint弃用警告。 - 两种调整方向:
- 降级Ruby到2.7.x版本(github-pages 163官方推荐的Ruby版本),可使用rbenv或rvm工具管理多版本Ruby;
- 升级github-pages到最新兼容版本,但需注意升级可能导致现有主题、配置出现兼容性问题,需提前备份并测试调整。
3. 清理旧依赖缓存
执行以下命令清理缓存,确保依赖安装状态正确:
bundle clean --force bundle install
4. 检查配置文件
执行bundle exec jekyll doctor命令,排查站点配置文件中可能存在的语法或逻辑问题。
内容的提问来源于stack exchange,提问作者Adam_G
相关产品推荐
相关产品推荐

