hexo踩坑记录


关于hexo基础:
https://www.unielu.com/posts/17c9.html

hexo-abbrlink 是一个 hexo 的插件,用于自动生成文章的链接。

出现的问题:

hexo 5.4.0 环境下:
该插件 自动生成链接 失效,总为 '0'

找了一半天还是解决不了,于是将版本回退了…

解决方案:

找到 hexo 根目录的 package.json 文件,将两个 hexo 的值都改为 4.2.1,然后在该目录npm i即可完成版本回退

在解决问题的过程中,发现:修改插件的代码,可以减少以后的代码量:

  1. 打开文件hexo根目录\node_modules\hexo-abbrlink\lib\logic.js

  2. 修改代码,代码就不全贴了,有点长,在合适的位置加入如下代码:

if(!tmpPost.title){
    tmpPost.title = last;
}
if(!tmpPost.categories){
    tmpPost.categories = "无";
}
if (!tmpPost.tags){
    tmpPost.tags = "无";
}
if(!tmpPost.top){
    tmpPost.top = 1;
}
if(!tmpPost.summary){
    tmpPost.summary = "无";
}
if(!tmpPost.date){
    tmpPost.date = data.date.format('YYYY-MM-DD HH:mm:ss');
}

log.i('Auto-fill [%s.md] successful', tmpPost.title);
  1. 完成的功能:该插件在填充abbrlink时,可以自动填充文章的其他缺失字段

问题2:代码{}显示为&#123…

关于环境:

  • 博客框架:hexo 5.4.0
  • 博客主题:matery 2.0.0
  • 代码高亮插件:prism_plugin

分析:这应该是代码解析方面的问题,从网上的博客来看,应该是某个地方少了 {&#123 的替换

解决方案:

  1. 找到该文件
    hexo根目录/node_modules/hexo-prism-plugin/src/index.js
  2. 替换这部分代码(第8行)
    const map = {
     ''': '\'',
     '&': '&',
     '>': '>',
     '&lt;': '<',
     '&quot;': '"',
     '&#123;': '{',
     '&#125;': '}'
    };
    

问题3:博客无法部署到 github

  1. 在 hexo 根目录下,需要装一个 git 部署的插件

    npm install hexo-deployer-git
    
  2. 然后看 git 的配置:

    git config  --global user.name  "你的github用户名"
    git config --global user.email  "你的github注册邮箱"
    
  3. 检查关于deploy的配置,
    在hexo根目录的 _config.yml 中,检查如下代码:

    deploy:
     type: git 
     repo: git@github.com: github-username/repo-name.git
     branch: master
    
  4. 检查ssh密匙
    如果C盘用户目录下没有 .ssh 文件夹,
    如下命令生成:,之后一直回车就行

    ssh-keygen -t rsa -C "上面填写的邮箱"(注意c必须大写)
    

    之后为整个用户配置密匙,使本地电脑拥有部署权限,
    在Github 网页中找到 account settings -> SSH and GPG keys -> New Keys
    ,将 刚刚的 .ssh 文件夹下 id_rsa.pub 的全部内容复制到 Key 这一栏即可。

问题4:关于CNAME

问题1:部署域名错误
由于更换了域名,每次 hexo d 之后都要去 github仓库 的设置里,更改部署地址。
解决方法:在 hexo 根目录的 source 文件夹下,新建CNAME文件(无后缀),用记事本打开并输入网站的域名。

问题2:CNAME自动删除
解决方法:像 CNAME README.MD 这些文件需要放到 hexo 根目录下的 source 文件夹下,
这样,hexo 生成博客网页再部署到 github 上时,这些文件才会出现在 github-repo 的根目录。

CNAME 是关于域名访问的配置的,一般需要
README.MD 一般是介绍这个仓库的,仅作为个人博客时可以不添加。

出现问题:搜索出来的结果,有的很长,美观不好。

关于插件hexo-generator-search的分析:该插件主要使用 js语言 工作,生成一个 search.jsonsearch.xml 作为搜索的资源库,

1. 修改配置(可选)

在 hexo 根目录下,将 search.xml 修改为 search.json。

search:
  path: search.json
  field: post

原因:两种格式的文件,json格式的大小只有xml大小的三分之一,而搜索时要加载这个文件

百度了一下,json作为轻量数据交互格式,比xml更好了

但个人能力有限,修改 search.js时,遇到以下代码无法更改,涉及到 js,ajax,jquery 知识

    $.ajax({
        url: path,
        dataType: "xml",
        success: function (xmlResponse) {
            // get the contents from search data
            var datas = xmlResponse.map(function () {
                return {
                    title: $("title", this).text(),
                    content: $("content", this).text(),
                    url: $("url", this).text()
                };
            }).get();
2. 修改json_generator.js(可选)

所在目录:\node_modules\hexo-generator-search\lib

这样,生成的 search.json 就不是只有一行了,大小 795kb -> 808kb

var json = JSON.stringify(res,null,4);
3. 修改search.js

所在目录:\themes\matery\source\js

主要在 Chrome 里对代码进行调试

发现了个bug,js中 stringObject.substr(start,length),第二个参数不是end。

4. 修改 matery.css

请查看:
https://github.com/blinkfox/hexo-theme-matery/pull/693

关于cdn问题

jsdeiver,只在更新仓库的 tags 时才会更新存储,不然一直用的缓存,主要是 search.xml 时效性需求高(其它文件没啥问题),所以搜索搜不到已有内容的话,就是太久没更新 tags 了

关于收录问题

谷歌收录成功,用的 sitemap 方式

百度的收录…一言难尽
它收录有三种方式:

  1. 主动收录
  2. 手动提交
  3. sitemap方式

它爬取不了 github pages,所以 sitemap方式 无法收录
尝试博客双部署,这样百度应该可以爬取了

…coding被腾讯云收购了(商业化了),证书有问题,于是放弃走国内的访问线路了…

主动收录是使用API,结果未知,跟谷歌收录比起来…又慢又难用,还是收录不了,算了。


文章作者: ╯晓~
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ╯晓~ !
评论
  目录