2015-01-31 75 views
1

我试图在哲基尔现场安装lunr.js,我得到这个错误:为什么在Jekyll上安装lunr.js搜索时出现错误?

Users/tjohnson/projects/resolve/_plugins/jekyll_lunr_js_search.rb:5:in `require': cannot load such file -- v8 (LoadError) 
from /Users/tjohnson/projects/resolve/_plugins/jekyll_lunr_js_search.rb:5:in `<top (required)>' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:58:in `require' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:58:in `block (2 levels) in require_plugin_files' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:57:in `each' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:57:in `block in require_plugin_files' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:56:in `each' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:56:in `require_plugin_files' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/plugin_manager.rb:18:in `conscientious_require' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/site.rb:74:in `setup' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/site.rb:36:in `initialize' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/commands/build.rb:28:in `new' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/commands/build.rb:28:in `process' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/lib/jekyll/commands/serve.rb:25:in `block (2 levels) in init_with_program' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `call' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `block in execute' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `each' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `execute' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary/program.rb:42:in `go' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/mercenary-0.3.5/lib/mercenary.rb:19:in `program' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/gems/jekyll-2.4.0/bin/jekyll:18:in `<top (required)>' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/jekyll:23:in `load' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/jekyll:23:in `<main>' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/ruby_executable_hooks:15:in `eval' 
from /Users/tjohnson/.rvm/gems/ruby-2.0.0-p481/bin/ruby_executable_hooks:15:in `<main>' 

我试图遵循https://github.com/slashdotdash/jekyll-lunr-js-search的指示,但我有点新的化身,所以我可能不理解一切。有两种方法来安装它:使用rubygem或直接下载预建的插件文件。我选择了后者。这里是我采取的步骤:

  1. 克隆回购到我的本地机器。
  2. 将jekyll_lunr_js_search.rb和jekyll_lunr_js_search文件夹移动到我的_plugins目录中。
  3. 已下载缩小的search.min.js文件(其中包含很多其他js)并将其添加到我的javascript目录。
  4. 将jquery.lunr.search.js添加到我的javascript目录中。
  5. 添加到我的default.html中文件下列参考文献:
<script src="{{ "/javascripts/search.min.js" | prepend:site.baseurl }}"> 
    </script> 
    <script src="{{ "/javascripts/jquery.lunr.search.js" | prepend:site.baseurl}}"></script> 
  • 将此添加脚本到我default.html中(通过一个包括),以及:
  • <script type="text/javascript"> 
        $(function() { 
        $('#search-query').lunrSearch({ 
         indexUrl: '/js/index.json', // Url for the .json file containing search index data 
          results : '#search-results', // selector for containing search results element 
          entries : '.entries',   // selector for search entries containing element (contained within results above) 
          template: '#search-results-template' // selector for Mustache.js template 
         }); 
         }); 
        </script> 
    
  • 添加这一搜索表单的PAG E:
  • <div id="search"> 
         <form action="/search" method="get"> 
         <input type="text" id="search-query" name="q" placeholder="Search" autocomplete="off"> 
         </form> 
         </div> 
    

    ,这导致容器正下方的形式在同一页上:

    <section id="search-results" style="display: none;"> 
         <p>Search results</p> 
         <div class="entries"> 
         </div> 
        </section> 
    

    和右侧下方这个胡子模板:

    {% raw %} 
        <script id="search-results-template" type="text/mustache"> 
         {{#entries}} 
         <article> 
          <h3> 
          {{#date}}<small><time datetime="{{pubdate}}" pubdate>{{displaydate}}</time></small>{{/date}} 
          <a href="{{url}}">{{title}}</a> 
          </h3> 
         </article> 
         {{/entries}} 
        </script> 
        {% endraw %} 
    

    现在,当我建立我的jekyll网站时,我收到了前面列出的错误。 (没有插件,我不会得到这个错误。)任何想法?我真的需要在我的网站上有一个搜索功能,而这个似乎是最好的。

    +0

    我也面临同样的问题,尝试使用许多搜索项目中建议使用gem install libv8,但那也行不通... – 2015-09-12 12:39:13

    回答

    0

    尝试先安装libv8 Ruby宝石。

    gem install libv8 -v '3.16.14.7' 
    

    gem install libv8 -v '3.16.14.7' -- --with-system-v8 
    

    然后安装最新版本的jekyll_lunr_js_search宝石。

    gem install jekyll-lunr-js-search 
    

    最后,在您的哲基尔网站的_config.yml配置文件的插件宝石的参考。

    gems: ['jekyll-lunr-js-search']