Hexo 踩坑:jquery 报错

今天玩了一下Hexo(一个基于node.js的静态博客框架),结果部署到服务器上后发现了一个报错。

jquery未定义。

jquery怎么会报错呢?一看是找不到链接上的文件。

//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js

不知道为什么会找不到(我的服务器在HK,所以应该不是不可描述的问题),不过不要紧,链接不对,咱们换个链接就好了。

把项目的代码全局搜索了一下。

Searching 6610 files for "<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>"

C:\svnMyProject\hexo_test\node_modules\hexo\node_modules\hexo-cli\assets\themes\landscape\layout\_partial\after-footer.ejs:
   15  <% } %>
   16  
   17: <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
   18  
   19  <% if (theme.fancybox){ %>

C:\svnMyProject\hexo_test\themes\landscape\layout\_partial\after-footer.ejs:
   15  <% } %>
   16  
   17: <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
   18  
   19  <% if (theme.fancybox){ %>

2 matches across 2 files  

hexo-cli(hexo的脚手架)和themes(博客用的主题)都要改,但生成的静态页面找的是主题,所以脚手架就不用改了。

after-footer.ejs:

<% if (config.disqus_shortname){ %>
<script>
  var disqus_shortname = '<%= config.disqus_shortname %>';
  <% if (page.permalink){ %>
  var disqus_url = '<%= page.permalink %>';
  <% } %>
  (function(){
    var dsq = document.createElement('script');
    dsq.type = 'text/javascript';
    dsq.async = true;
    dsq.src = '//' + disqus_shortname + '.disqus.com/<% if (page.comments) { %>embed.js<% } else { %>count.js<% } %>';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
  })();
</script>
<% } %>

<script src="//code.jquery.com/jquery-2.0.3.min.js"></script>

<% if (theme.fancybox){ %>
  <%- css('fancybox/jquery.fancybox') %>
  <%- js('fancybox/jquery.fancybox.pack') %>
<% } %>

<%- js('js/script') %>
<%- partial('gauges-analytics') %>

替换掉之后再打包部署,OK,不报错了。