hexoblog 搭建遇到的问题

需要js版本

js版本过高会导致调用hexo g 命令时出现问题。建议使用node.js 12以下版本,我用的是v12.18.3
历史版本下载可以参考如下链接
https://nodejs.org/en/download/releases/
如果想要管理多个版本的node,可以通过nvm管理,nvm下载和安装可以自行百度。

external_link 错误
我们可能会遇到如下问题,当我们执行hexo g 时

hexo版本更新报错:INFO Validating config WARN Deprecated config detected: “external_link“ with a Boolean
解决方案是
将原有的

external_link:
  enable: true|false

修改为

external_link:
  enable: true # Open external links in new tab
  field: site # Apply to the whole site
  exclude: ''

执行hexo clean ,然后再次hexo g 生成文章。

遇到乱码

hexo s 运行后打开网页显示如下乱码

{% extends '_layout.swig' %} {% import '_macro/post.swig' as post_template %} 
{% import '_macro/sidebar.swig' as sidebar_template %} 
{% block title %}{{ config.title }}
{% if theme.index_with_subtitle and config.subtitle %} - 
{{config.subtitle }}{% endif %}{% endblock %} {% block page_class %} 
{% if is_home() %}page-home{% endif -%}
 {% endblock %} {% block content %} {% for post in page.posts %} 
{{ post_template.render(post, true) }}
 {% endfor %} {% include '_partials/pagination.swig' %} 
{% endblock %} {% block sidebar %} {{ sidebar_template.render(false) }} {% endblock %}

则需要单独安装 hexo 的渲染包

npm i hexo-renderer-swig

因为hexo5.0之后render包不进入hexo主干代码里,需要单独安装。
安装好后执行hexo clean, 然后执行hexo g 生成代码,再次运行hexo s
打开网页查看可以正常显示。

hexo 发布问题

如果hexo d 遇到如下问题

Error: Host key verification failed.

此时需要在本机生成ssh key,将ssh key 配置到github或者gitee的ssh管理里,如果博客是挂在github上就将key写入github的ssh。
如果博客是挂在gitee上就将key写入gitee的ssh管理里。
详见我的另一篇文章https://www.limerence2017.com/2017/08/24/hexoblogs/

将hexo 和github 关联起来
还是编辑根目录下_config.yml文件

deploy:
    type: git
    repo: git@github.com:secondtonone1/secondtonone1.github.io.git  #这里的网址填你自己的
    branch: master
```   
保存后需要提前安装一个扩展:
``` cmd
npm install hexo-deployer-git --save

安装该扩展主要是为了支持hexo d 命令。

接下来就是将Hexo部署到我们的Github仓库上:
命令行输入 hexo d 会自动将当前的博文生成html并且发布到github进行托管,在浏览器输入 secondtonone1.github.io (secondtonone1用户名替换为你自己的)即可浏览自己的博客了。这样就完成了github和hexo的关联部署。值得改进的地方是,每次调用hexo d 上传到github,都会提示输入github的用户名和密码,非常不方便
可以通过SSH keys的设置,达到不输入密码直接发布的目的。

SSH keys的配置

在Git 命令行输入如下命令:

$ ssh-keygen -t rsa -C "secondtonone1@163.com"

secondtonone1@163.com 替换为你的github邮件地址
Git显示:

$ ssh-keygen -t rsa -C "secondtonone1@163.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):<回车>

系统会要求你输入密码,这里设置的密码主要是在你提交Git时弹出密码认证,不想输入直接回车

Enter passphrase (empty for no passphrase):<输入加密串>
Enter same passphrase again:<再次输入加密串>

配置ssh和github仓库

找到id_rsa.pub 并复制文件内容
id_rsa.pub文件一般位于电脑用户配置文件夹下的一个.ssh文件下C:Users你的用户名.ssh
登录Github并添加密钥
进入github首页在右上角选择settings设置。

测试通过git bash链接到Git

链接Git

$ ssh -T git@github.com

提示如下:

yes
The authenticity of host 'github.com (207.65.227.44)' can't be established.
RSA key fingerprint is 16:27:42:18:60:1d:7b:13:d2:b5:c4:20:7e:56:86:d8:71:f3
Are you sure you want to continue connecting (yes/no)?
以下为成功链接到Git

Hi XXXX! You've successfully authenticated, but GitHub does not provide shell access.

以后每次提交博文到github就不需要输入密码了,很方便。配置好后清除之前的记录,重新生成并提交,可以登录自己的github仓库地址(secondtonone1@163.com)查看博文了

hexo clean
hexo g
hexo d


热门评论

热门文章

  1. 使用hexo搭建个人博客

    喜欢(533) 浏览(11224)
  2. Linux环境搭建和编码

    喜欢(594) 浏览(12878)
  3. Qt环境搭建

    喜欢(517) 浏览(23322)
  4. vscode搭建windows C++开发环境

    喜欢(596) 浏览(78827)
  5. 聊天项目(28) 分布式服务通知好友申请

    喜欢(507) 浏览(5700)

最新评论

  1. C++ 并发三剑客future, promise和async Yunfei:大佬您好,如果这个线程池中加入的异步任务的形参如果有右值引用,这个commit中的返回类型推导和bind绑定就会出现问题,请问实际工程中,是不是不会用到这种任务,如果用到了,应该怎么解决?
  2. interface应用 secondtonone1:interface是万能类型,但是使用时要转换为实际类型来使用。interface丰富了go的多态特性,也降低了传统面向对象语言的耦合性。
  3. 利用栅栏实现同步 Dzher:作者你好!我觉得 std::thread a(write_x); std::thread b(write_y); std::thread c(read_x_then_y); std::thread d(read_y_then_x); 这个例子中的assert fail并不会发生,原子变量设定了非relaxed内存序后一个线程的原子变量被写入,那么之后的读取一定会被同步的,c和d线程中只可能同时发生一个z++未执行的情况,最终z不是1就是2了,我测试了很多次都没有assert,请问我这个观点有什么错误,谢谢!
  4. boost::asio之socket的创建和连接 项空月:发现一些错别字 :每隔vector存储  是不是是每个. asio::mutable_buffers_1 o或者    是不是多打了个o
  5. 聊天项目(15) 客户端实现TCP管理者 lkx:已经在&QTcpSocket::readyRead 回调函数中做了处理了的。
  6. 无锁并发队列 TenThousandOne:_head  和 _tail  替换为原子变量。那里pop的逻辑,val = _data[h] 可以移到循环外面吗
  7. 堆排序 secondtonone1:堆排序非常实用,定时器就是这个原理制作的。
  8. 网络编程学习方法和图书推荐 Corleone:啥程度可以找工作
  9. 创建项目和编译 secondtonone1:谢谢支持
  10. visual studio配置boost库 一giao里我离giaogiao:请问是修改成这样吗:.\b2.exe toolset=MinGW
  11. string类 WangQi888888:确实错了,应该是!isspace(sind[index]). 否则不进入循环,还是原来的字符串“some string”
  12. Qt 对话框 Spade2077:QDialog w(); //这里是不是不需要带括号
  13. 构造函数 secondtonone1:构造函数是类的基础知识,要着重掌握
  14. 解决博客回复区被脚本注入的问题 secondtonone1:走到现在我忽然明白一个道理,无论工作也好生活也罢,最重要的是开心,即使一份安稳的工作不能给我带来事业上的积累也要合理的舍弃,所以我还是想去做喜欢的方向。
  15. Qt MVC结构之QItemDelegate介绍 胡歌-此生不换:gpt, google
  16. 聊天项目(7) visualstudio配置grpc diablorrr:cmake文件得改一下 find_package(Boost REQUIRED COMPONENTS system filesystem),要加上filesystem。在target_link_libraries中也同样加上
  17. 面试题汇总(一) secondtonone1:看到网络上经常提问的go的问题,做了一下汇总,结合自己的经验给出的答案,如有纰漏,望指正批评。
  18. 答疑汇总(thread,async源码分析) Yagus:如果引用计数为0,则会执行 future 的析构进而等待任务执行完成,那么看到的输出将是 这边应该不对吧,std::future析构只在这三种情况都满足的时候才回block: 1.共享状态是std::async 创造的(类型是_Task_async_state) 2.共享状态没有ready 3.这个future是共享状态的最后一个引用 这边共享状态类型是“_Package_state”,引用计数即使为0也不应该block啊
  19. 再谈单例模式 secondtonone1:是的,C++11以后返回局部static变量对象能保证线程安全了。
  20. 处理网络粘包问题 zyouth: //消息的长度小于头部规定的长度,说明数据未收全,则先将部分消息放到接收节点里 if (bytes_transferred < data_len) { memcpy(_recv_msg_node->_data + _recv_msg_node->_cur_len, _data + copy_len, bytes_transferred); _recv_msg_node->_cur_len += bytes_transferred; ::memset(_data, 0, MAX_LENGTH); _socket.async_read_some(boost::asio::buffer(_data, MAX_LENGTH), std::bind(&CSession::HandleRead, this, std::placeholders::_1, std::placeholders::_2, shared_self)); //头部处理完成 _b_head_parse = true; return; } 把_b_head_parse = true;放在_socket.async_read_some前面是不是更好
  21. 类和对象 陈宇航:支持!!!!
  22. 聊天项目(9) redis服务搭建 pro_lin:redis线程池的析构函数,除了pop出队列,还要free掉redis连接把
  23. protobuf配置和使用 熊二:你可以把dll放到系统目录,也可以配置环境变量,还能把dll丢到lib里

个人公众号

个人微信