【问题标题】:Jekyll serve --baseurl '' returns error:can't dup TrueClass. Use --trace to view backtraceJekyll serve --baseurl '' 返回错误:无法复制 TrueClass。使用 --trace 查看回溯
【发布时间】:2014-04-26 08:57:43
【问题描述】:

我正在使用 gh-pages 为我的 jekyll 网站进行部署。

每次我想在本地提供 jekyll 时,我一直在尝试进行开发,而不必在我的源代码的所有 css、js 和 img 文件之前删除/添加 {{ site.baseurl }} 路径。

我有点卡在这里,因为每个人都说要像这样传递一个空字符串:

jekyll serve --baseurl ""

但是当我这样做时,它会生成站点正常但返回:

error: can't dup TrueClass. Use --trace to view backtrace

似乎无法理解为什么我会收到此错误。

我的 _config.yml 看起来或多或少是这样的:

url: "http://myjekyllsite.github.io/"
baseurl: "/my-baseurl"

我已经链接了我的 js 和 css 文件,并将路径添加到我的图像,如下所示:

<img src="{{ site.baseurl }}/img/image1.jpg">

我使用的唯一插件是 jekyll-sass

有什么想法吗?

【问题讨论】:

  • 是否需要使用绝对路径?为什么不只使用站点根目录的相对 URL(即&lt;img src="/img/image1.jpg"&gt;,然后你就可以放弃 baseurl 的东西了。
  • 另外,如果你可以链接到 repo,我会看看你的完整代码。
  • 另外,尝试使用--baseurl "" 参数而不是空的--baseurl "/"
  • 谢谢乔尔,使用 --baseurl "/" 让我得到了下面的答案。当然,当我最初使用 --baseurl "/" 时,路径有一个像 //img/img1.jpg 这样的双斜杠,所以答案是删除我所有链接中的正斜杠。

标签: ruby github jekyll base-url github-pages


【解决方案1】:

我没有找到修复 dup TrueClass 的传统方法,但我找到了一个足够好的方法来解决它,这样我就可以在本地开发,而不必每次都切换这些路径。

在 gh-pages 到 jekyll 的指南中: http://jekyllrb.com/docs/github-pages/

他们特别声明在 _config.yml 中的 baseurl 上没有斜杠。我发现没有遵循他们的建议并在 _config.yml 中使用斜杠,如下所示:

baseurl: /my-path/

我可以让我的所有其他链接仍然使用 {{ site.baseurl }} 路径,只是没有前导斜杠并使用:

jekyll serve --baseurl '/' -w

所以我的所有路径都可以正常工作。 示例:

<link rel="stylesheet" href="{{ site.baseurl }}css/sytle.css">

当我也推送到 gh-pages 时,它也可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2017-04-21
    相关资源
    最近更新 更多