【问题标题】:Jekyll Website won't loadJekyll 网站无法加载
【发布时间】:2018-04-19 14:51:45
【问题描述】:

我一直在尝试让 Jekyll 网站在 Github Pages 上运行,但它似乎不起作用。我一直收到错误

您的网站在构建时遇到问题:符号链接 /vendor/bundle/ruby/2.3.0/gems/ffi-1.9.18/ext/ffi_c/libffi-x86_64-linux-gnu/include/ffitarget.h 以您站点的存储库中不存在的文件为目标。为了 更多信息,请参阅 https://help.github.com/articles/page-build-failed-symlink-does-not-exist-within-your-site-s-repository/.

我已经尝试过 9 种不同的 Jekyll 主题,但它们似乎都不起作用,所以我显然做错了。以下是我正在采取的步骤

1) 创建一个新的 repo 并将 Jekyll Theme 中的文件放在那里,或者从另一个 repo 复制它(例如https://github.com/iwiedenm/jekyll-theme-massively-src

2) Git 将其拉入我的计算机并确保我在 gh-pages 分支上

3) 运行bundle install --path vendor/bundle

4) 确保它是使用 bundle exec jekyll serve 构建的

5) 看起来不错后,将其上传到 Github git add * git commit -m 'Test' git push

然后我在浏览器中访问 repo,我看到上面的错误,由于缺少“ffitarget.h”文件,我看不到网站。当我在那个目录中查找它时,我能够找到它,但 Github 似乎无法找到它。

尼克舒

PS:请随意将其标记为重复。我看过其他页面,比如this,我试过了,但是没有用。

【问题讨论】:

    标签: jekyll github-pages


    【解决方案1】:

    Github 页面将使用 vendor 中的本地 gem。如果你提交它们,每次 github 页面尝试解析符号链接时都会出错。

    来自新的存储库

    在您的 .gitignore 文件中添加vendor/**,然后再执行git add . *

    git add . * 中的点强制 git 暂存点文件(.gitignore,...)。

    来自供应商文件夹中包含 gem 的现有存储库

    • 在您的 .gitignore 文件中添加 vendor/**

    • 从版本控制中删除 vendor/ 文件,git rm --cached -r vendor/

    您现在可以暂存、提交和推送

    git add . *
    git commit -m 'remove vendor from versioning'
    git push origin master`
    

    注意事项

    • 您可以发布 master 分支内容,因为 gh-pages 分支不再是强制性的。 See documentation
    • 除非您有调试等特殊需求,否则没有必要为每个项目下载 gem。您可以只进行捆绑安装。

    【讨论】:

      【解决方案2】:

      确保vendor/bundle/ 目录已被排除..

      默认情况下,Jekyll 排除该目录,因此它不会关心您的 vendor 目录中的内容..

      当您 fork/clone 一个 repo 时,exclude: 列表可能已被自定义(因此覆盖了默认设置)。您可以通过将 vendor/bundle/ 添加到您的 custom 排除列表中来确保 Jekyll 忽略它:

      # Exclude list
      exclude:
      - README.md
      - Gemfile
      - Gemfile.lock
      - node_modules
      - gulpfile.js
      - package.json
      - _site
      - src
      - vendor
      - CNAME
      - LICENSE
      - Rakefile
      - old
      - vendor/bundle/
      

      要在本地模拟网站是如何在 GitHub Pages 上构建的,您可以使用--safe 开关构建

      bundle exec jekyll serve --safe
      

      【讨论】:

      • 抱歉,但排除 vendor/bundle/ 不起作用。您需要 gitignore 供应商文件夹。
      • @DavidJacquel 请详细说明如果 Jekyll 不处理它们,为什么有必要不签入 vendor/ 文件..?
      • 因为 Github 页面似乎在 jekyll 启动时筛选 gem 并在 ffi 符号链接上中断。仅在生成时排除作品。
      猜你喜欢
      • 1970-01-01
      • 2011-10-15
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 2017-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多