Jekyll live reload功能异常求助:为何无法正常工作?
Jekyll Live-Reload 抛出 Errno::ECONNRESET 错误,无法完成重新生成
之前正常使用Jekyll live-reload功能约50次,现在每次执行jekyll serve -l都会反复抛出以下错误,且无法完成文件重新生成:
$ jekyll serve -l Configuration file: MY_SITE/_config.yml Source: MY_SITE Destination: MY_SITE/_site Incremental build: disabled. Enable with --incremental Generating... Jekyll Feed: Generating feed for posts done in 0.473 seconds. Auto-regeneration: enabled for '.../docs' LiveReload address: http://127.0.0.1:35729 Server address: http://127.0.0.1:4000/ Server running... press ctrl-c to stop. LiveReload: Browser connected Regenerating: 1 file(s) changed at 2024-02-13 09:26:26 CHANGED_FILE_PATH Jekyll Feed: Generating feed for posts ...done in 0.235080909 second [2024-02-13 09:26:26] ERROR Errno::ECONNRESET: Connection reset by peer @ io_fillbuf - fd:30 HOME/.rvm/gems/ruby-3.1.2/gems/webrick-1.8.1/lib/webrick/httpserver.rb:82:in `eof?' HOME/.rvm/gems/ruby-3.1.2/gems/webrick-1.8.1/lib/webrick/httpserver.rb:82:in `run' HOME/.rvm/gems/ruby-3.1.2/gems/webrick-1.8.1/lib/webrick/server.rb:310:in `block in start_thread'
解决方法:
- 检查端口占用:LiveReload默认用35729端口,Jekyll服务器用4000端口,可能被其他进程占用。用以下命令排查:
- macOS/Linux:
lsof -i :35729或lsof -i :4000,找到进程后用kill -9 [PID]杀掉 - Windows:打开命令提示符执行
netstat -ano | findstr :35729,找到PID后在任务管理器结束对应进程
- macOS/Linux:
- 更新或降级webrick:当前错误来自webrick 1.8.1,尝试更新依赖:
- 在项目根目录的Gemfile添加一行:
gem 'webrick' - 执行
bundle update webrick,之后重新启动Jekyll
或者指定兼容版本,比如添加gem 'webrick', '~> 1.7'后执行bundle install
- 在项目根目录的Gemfile添加一行:
- 清除Jekyll缓存:删除项目下的
_site文件夹和.jekyll-cache文件夹,然后重新执行jekyll serve -l - 强制轮询文件变化:文件监听可能出现异常,用
jekyll serve --livereload --force_polling启动,强制Jekyll轮询文件变化 - 重置浏览器LiveReload连接:禁用浏览器的LiveReload插件,重新启用后刷新页面,或者换用其他浏览器测试
内容的提问来源于stack exchange,提问作者Chiara Ani
相关产品推荐
相关产品推荐

