我试图使用 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 回答
该错误似乎是因为符号链接的
static_file
在写入_site/bin/erb
之后尝试写入_site/bin/erb
.不知道为什么它在本地构建时不会导致类似的错误..
app/bin
在静态网站中没有任何作用..所以你可以通过将它添加到exclude:
数组来告诉Jekyll忽略该目录 .