首页 文章

jekyll服务器在Heroku上抛出错误

提问于
浏览
1

我试图使用 jekyll serve 运行我的jekyll网站,但它失败了 . 以下是我尝试的命令的变体列表:

bundle exec jekyll serve --port $PORT --host 0.0.0.0

bundle exec jekyll serve

jekyll serve --port $PORT --host 0.0.0.0

jekyll serve

对于上述所有命令,它失败并在我的heroku应用程序上给出以下错误消息:

jekyll 3.7.0 | Error: File exists @ syserr_fail2_in - /app/_site/bin/erb

请你帮忙 . 我的问题与这篇文章略有不同:link

我试过以下版本的ruby:

  • 2.1.9

  • 2.2.9

  • 2.3.5

  • 2.4.3

请参阅下面的配置:


config.ru

require 'rack/jekyll'
run Rack::Jekyll.new

Rakefile

namespace :assets do
  task :precompile do
    sh 'bundle exec jekyll build'
  end
end

Procfile

web: bundle exec jekyll serve --port $PORT --host 0.0.0.0

Gemfile

source 'https://rubygems.org'
gemspec
ruby '2.4.3'
gem 'jekyll'
gem 'rack-jekyll'
gem 'rake'

_config.yml

title: title
description: description
google_analytics:
theme: jekyll-theme-dinky
jekyll_auth:
      ssl: true
gems: ['kramdown']
exclude: ['config.ru', 'Gemfile', 'Gemfile.lock', 'vendor', 'Procfile', 
'Rakefile']

我在本地运行我的网站与相同版本的ruby,rubygems,bunlder和jekyll没有这个问题 .

如果我使用puma运行它,它可以工作,但然后我的permanlinks不工作 . 我想用jekyll服务来运行它

请有人帮忙 .


这里是 jekyll serve --trace 的输出:

/app/vendor/ruby-2.2.9/lib/ruby/2.2.0/fileutils.rb:1371:in `symlink': File exists @ sys_fail2 - /app/_site/bin/erb (Errno::EEXIST)
    from /app/vendor/ruby-2.2.9/lib/ruby/2.2.0/fileutils.rb:1371:in `copy'
    from /app/vendor/ruby-2.2.9/lib/ruby/2.2.0/fileutils.rb:472:in `block in copy_entry'
    from /app/vendor/ruby-2.2.9/lib/ruby/2.2.0/fileutils.rb:1498:in `call'
    from /app/vendor/ruby-2.2.9/lib/ruby/2.2.0/fileutils.rb:1498:in `wrap_traverse'
    from /app/vendor/ruby-2.2.9/lib/ruby/2.2.0/fileutils.rb:469:in `copy_entry'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/static_file.rb:154:in `copy_file'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/static_file.rb:100:in `write'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/site.rb:208:in `block in write'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/site.rb:329:in `block (2 levels) in each_site_file'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/site.rb:328:in `each'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/site.rb:328:in `block in each_site_file'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/site.rb:327:in `each'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/site.rb:327:in `each_site_file'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/site.rb:207:in `write'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/site.rb:75:in `process'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/command.rb:28:in `process_site'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/commands/build.rb:65:in `build'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/commands/build.rb:36:in `process'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/commands/serve.rb:93:in `block in start'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/commands/serve.rb:93:in `each'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/commands/serve.rb:93:in `start'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/lib/jekyll/commands/serve.rb:75:in `block (2 levels) in init_with_program'
    from /app/vendor/bundle/ruby/2.2.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `call'
    from /app/vendor/bundle/ruby/2.2.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
    from /app/vendor/bundle/ruby/2.2.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
    from /app/vendor/bundle/ruby/2.2.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
    from /app/vendor/bundle/ruby/2.2.0/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
    from /app/vendor/bundle/ruby/2.2.0/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
    from /app/vendor/bundle/ruby/2.2.0/gems/jekyll-3.7.0/exe/jekyll:15:in `<top (required)>'
    from /app/vendor/bundle/bin/jekyll:17:in `load'
    from /app/vendor/bundle/bin/jekyll:17:in `<main>'

1 回答

  • 0

    该错误似乎是因为符号链接的 static_file 在写入 _site/bin/erb 之后尝试写入 _site/bin/erb .

    不知道为什么它在本地构建时不会导致类似的错误.. app/bin 在静态网站中没有任何作用..所以你可以通过将它添加到 exclude: 数组来告诉Jekyll忽略该目录 .

相关问题