这里提供了利用hexo搭建github博客的详细操作,以及记录下关于搭建过程中碰到的问题。

如果是小白的话,建议从这篇文章看起:
超详细Hexo+Github Page搭建技术博客教程

在搭建过程中遇到问题的话也别灰心,不要承认自己就是不行,就是个爱哭鬼。呐,我就把一些自己在搭建中遇到的问题和方法抛出来,说不定你也遇到了,不妨照着解决看:

  • npm install hexo报错问题

    跟你的node版本有关系,可以看下上面那条链接说明要求的node版本,或hexo官网说明的node版本hexo安装前提

    (当然,在这里tips一下,若想维护多个node版本,可关注下node版本管理工具:nvm - node版本管理工具介绍
  • npm报错 Error: EACCES: permission denied

    大概报错信息长这样:

    ERR! stack:
    1
    2
    3
    4
    5
    6
    npm ERR!    'Error: EACCES: permission denied,  
    access \'/opt/node-v10.16.0-linux-x64/lib node_modules\'',
    npm ERR! errno: -13,
    npm ERR! code: 'EACCES',
    npm ERR! syscall: 'access',
    npm ERR! path: '/opt/node-v10.16.0-linux-x64/lib/node_modules' }

    这是因为全局安装hexo时使用的是root用户导致。

    可采取以下任一种解决办法

    1、对后续所有终端操作命令都加上sudo,比如:
    sudo npm install
    2、为当前用户添加root权限:

    1
    2
    cd 你的文件夹路径的上一级目录。
    sudo chmod -R 777 你的文件夹名

    3、把目录用户改成当前用户.比如你当前使用的用户名为aba。敲入命令:
    sudo chown -R aba ~/.npm

  • 报错:Failed to save ‘你的文件名’

    大概报错信息长这样:

    1
    Failed to save ‘你的文件名': Insufficient permissions. Select 'Retry as Sudo' to retry as superuser.

    同上,也是因为没有root权限导致,或按照上面方式对整个目录添加root权限,或按照以下方式对单个文件添加root。
    解决:
    chmod -R 777 文件名

  • Failed to connect to port 443: Operation timed out

    问题和解决方案看这里:Failed to connect to port 443: Operation timed out

    或者上述方案解决不了的话,那就看这里:GitHub无法访问、443 Operation timed out的解决办法

  • ‘xxx’ does not appear to be a git repository

    检查下创建的githubio xxx分支是否存在,或者githubio上设置的分支同项目提交到的分支不同。
  • FATAL Port 4000 has been used. Try other port instead.

    这个问题,往往是因为没有正确关闭上一次的Hexo s的操作导致Node进程还在后台执行,并占用4000.
    启动任务管理器找到node.js前缀的进程名,关闭即可。

    或在站点下的文件_config.yml内加上如下代码更改hexo-server运行时的端口号:

    1
    2
    3
    4
    erver:
    port: 4001 #端口号随意,默认是4000
    compress: true
    header: true

    或在启动服务时加上端口号:

    1
    hexo server -p 4001
  • 解决Hexo标题英文自动大写问题

    去主题的 css 文件中找 text-transform 属性, 将所有text-transform 属性值改为none
    顺便回顾一下 css text-transform:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    *将标签中的英文全部转换为大写*/
    text-transform:uppercase;

    /*将标签中的每个英文单词的第一个字母全部转换为大写*/
    text-transform:capitalize;

    /*将标签中的英文全部转换为小写*/
    text-transform:lowercase;

    /*不改变大小写*/
    text-transform:None;