Pulpcode

捕获,搅碎,拼接,吞咽

0%

如何解决hexo无法展示博客内容的问题

起因

今天写了一篇博客,然后更新到github上就不展示了,整个页面的框架还在,但是就是文章不展示,在经过一番折腾之后,我终于又让自己的博客回复正常了,这里分享下我是如何解决的。

先说明环境,我使用的是hexo的next主题,而且我是眼睁睁的看着,我发布文章之后,旧的页面是好的,一刷新是坏的,我想到了是不是自己发布坏了,但是我在本地启动hexo server没有任何问题,然后我又试着hexo clean后发布,依旧没什么用。

我看了下自己主页的源码,发现了一个问题,就是

1
<link rel="stylesheet" type="text/css" href="/vendors/fancybox/source/jquery.fancybox.css?v=2.1.5"/>

这条连接点不进去了,出现了github page 404的页面,然后我去自己的github看了一下,这个路径有的。

定位问题

可以确认博客不展示就是因为和这个css有关。

之后我又去网上搜了其它一些人的博客,同样的hexo, 同样的next,页面展示都正常,然后我去看了他们github的网站项目,跟我的路径一模一样,简直是见了鬼。

之后我试着看看能不能通过博客地址访问到别的静态文件,我发现只有vendors文件夹下的文件不能展示,其它目录下的静态文件都能展示。

之后我想到,可能github对这个文件夹做了某些限制,然后我决定给这个文件夹换个名字。

解决方案

我把这个文件夹从vendors更名为lib,你想换什么看你喜好,反正别是vendor,因为我试了,也不行。

首先你需需要在你的themes文件夹下搜索vendors关键字,然后把如下几行替换,下面的代码是用来从themes生成网站的。

1
2
3
4
5
6
7
8
C:\Users\UPC\Documents\hexo\themes\next\.bowerrc:
2: "directory": "source/vendors"

C:\Users\UPC\Documents\hexo\themes\next\_config.yml:
89: vendors: vendors

C:\Users\UPC\Documents\hexo\themes\next\bower.json:
22: "source/vendors",
1
2
3
4
5
6
7
8
C:\Users\UPC\Documents\hexo\themes\next\.bowerrc:
2: "directory": "source/lib"

C:\Users\UPC\Documents\hexo\themes\next\_config.yml:
89: vendors: lib

C:\Users\UPC\Documents\hexo\themes\next\bower.json:
22: "source/lib",

然后你要把themes下的vendors文件夹,重命名为lib

然后你需要hexo clean,删除掉之前生成的项目。

之后你再hexo generate重新生成,如果没问题的话,你会在public文件夹下,看见一个lib文件夹。

之后你再发布你的博客,一切就又恢复正常了,看下网页源代码,这个时候,css的路径变为:

1
<link rel="stylesheet" type="text/css" href="/lib/fancybox/source/jquery.fancybox.css?v=2.1.5"/>

原因

后来我才知道什么原因,原来github把jekyll升级到了3.3,[What’s new in GitHub Pages with Jekyll 3.3]](https://github.com/blog/2277-what-s-new-in-github-pages-with-jekyll-3-3)

这个版本会忽略vendor文件夹,这也就是为什么,我本地起是ok的,放到github就不行了,我也明白了,为什么有的人的hexo的博客是好的,因为他们还没更新,只要更新一重启就坏了。