使用Jekyll构建静态网站时bundle加载jekyll命令遇语法错误求助
Jekyll启动报错(SyntaxError: unexpected
end)的解决方案 问题背景
克隆旧Jekyll静态网站项目后,运行bundle exec jekyll serve触发语法错误,错误指向jekyll-4.3.3的new.rb文件第168行存在意外的end,已尝试多种网络方案未解决,纠结是否要更换Ruby/Jekyll版本或处理Gem依赖。
错误信息:
bundler: failed to load command: jekyll
(/Users/me/Documents/GitHub/mystie/vendor/bundle/ruby/3.1.0/bin/jekyll)
internal:....y/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb:37:inrequire': ......./vendor/bundle/ruby/3.1.0/gems/jekyll-4.3.3/lib/jekyll/commands/new.rb:168: syntax error, unexpectedend', expecting end-of-input (SyntaxError)
解决步骤
1. 重置Gem依赖,排除文件损坏
- 删除项目内的
vendor/bundle目录,执行bundle install重新安装所有依赖,避免克隆过程中依赖文件损坏。 - 若项目带了
Gemfile.lock,直接删除该文件后再执行bundle install,让Bundler根据本地环境生成适配的锁文件。
2. 验证Ruby与Jekyll版本兼容性
- Jekyll 4.3.3兼容Ruby 2.7.0+,但Ruby 3.1.x可能存在个别Gem适配问题:用rbenv或rvm快速切换到Ruby 2.7.x版本,重新安装依赖后启动项目测试。
- 尝试降级Jekyll版本:修改项目根目录
Gemfile,将gem "jekyll"改为gem "jekyll", "~> 4.2.0",执行bundle update jekyll后重新启动。
3. 修复损坏的Jekyll核心文件
若重新安装依赖后仍报同一文件错误,说明本地缓存的Jekyll Gem损坏:
- 执行
gem uninstall jekyll卸载所有Jekyll版本,再通过bundle install重新安装项目指定的版本。
内容的提问来源于stack exchange,提问作者Matt Fairweather
相关产品推荐
相关产品推荐

