今天玩了一下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:svnMyProjecthexo_test ode_moduleshexo ode_moduleshexo-cliassets hemeslandscapelayout\_partialafter-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:svnMyProjecthexo_test hemeslandscapelayout\_partialafter-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,不报错了。