安装HEXO遇到的各种错误

文章更新

  1. 20160406-初稿
  2. 20160517-加入hexo s生成错误

Hexo is running at http://0.0.0.0:4000/

最近几次在自己的PC上,运行hexo s后一切正常,但是进入浏览器里面输入localhost:4000一片空白。

运行时候一切正常

打开浏览器输入localhost:4000却没反应

搜索了一下,排在搜索引擎前面的答案没啥用。正确的原因是因为4000端口被占用了,一般谁会占用呢,目前来看是被Foxit福昕浏览器占用了。

解决办法很简单,Windows平台下CTRL+R,运行cmd,然后通过命令netstat -ano |findstr 4000查看端口的占用情况。

netstat命令查看端口占用情况

红色框中的数字,是占用了4000端口的线程PID,通过tasklist命令,就可以查找出来,到底这个PID对应的是哪个程序了。在cmd中输入命令tasklist | findstr 2956,(这里用2956举例,查找其他PID方法一样)。

tasklist命令

可以看到EXE对应的程序名字是FoxitProtect.exe,一眼就能知道是福昕浏览器的保护进程。

关闭CMD窗口,再次运行CTRL+R,输入Services.msc进入服务(通过控制面板进入服务是一样的)。

找到Foxit服务

把它关掉,不自动启动。

关闭服务并且选择手动启动

这样,再次cmd执行netstat -ano | findstr 4000的时候,就会发现没有进程占用了,可以正大光明的hexo s了。

PS: 如果在服务或者任务管理器中都找不到该程序,手动杀死即可。

命令如下:

taskkill -PID <进程号> -F //强制关闭某个进程

Hexo g的时候遇到Warn: No layout

Warn no layout

因为缺少模板,进入Hexo目录,执行

$ git clone https://github.com/iissnan/hexo-theme-next themes/next

即可,不过要看看_config.yml文件里模板指定和下载的主题是否一致。

ERROR Deployer not found: git

这个问题也是最近折腾的时候才发现的,我就不说具体怎么弄明白了,直接上方法

  1. 确定你的_config.yml下deploy : 后面,有一个半角空格
deploy: #这个空格,就是需要在前面这句话后的冒号的后面,yml语法问题,变态
  type: git
  repo: git@github.com:<your github username>/<your github username>.github.io.git
  branch: master

如果还报错,应该就是没有装hexo-deployer-git。 怎么安装:

$ npm install hexo-deployer-git --save

然后再:

$ hexo deploy

好了

Permission denied (publickey).

在部署HEXO到GITHUB的时候,才会出现这个提示,我的博客是GITHUB和CODING.NET两个网站一起部署的,CODING.NET并不会提示这个错误,而是直接弹出对话框让你输入用户名和密码。

遇到这个错误,是因为GITHUB只允许添加本电脑的SSH KEY到GITHUB的网站管理设置,让它记住,你才能这样部署博客。

[图片缺失:GITHUB提示权限错误]

解决步骤

配置SSh key:

首先我们需要检查你电脑上现有的ssh key:

$ cd ~/.ssh 如果提示:“No such file or directory” 说明你是第一次使用git。如果没有提示,也不一定说明你有key了,打开这个目录看看,比如我当时曾经部署过,后来不知道为什么自己又把key文件删掉了。 对于windows pc用户,这个.ssh目录,一般在c:\users\你的用户名目录下面。

生成新的SSH Key:

$ ssh-keygen -t rsa -C “you@youremail.com” 注意:Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):(回车就好), Enter passphrase (empty for no passphrase):(回车,不需要输入密码) Enter same passphrase again:(回车不需要输入密码) 因为Hexo的自动部署如果有密码的话会部署失败

当出现如图所示的时候就是成功了 注:忽略我在Enter file in which to save the key(/Users/your_user_directory/.ssh/id_rsa):的 ~ 直接回车保存在默认路径。

添加SSH Key到GitHub

在本机设置SSH Key之后,需要添加到GitHub上,以完成SSH链接的设置。

$ cd ~/.ssh/ && lscat 可以看到此目录下的文件:id_rsa id_rsa.pub

$ cat id_rsa.pub 如图所示:将文件内容全部复制下来

登陆GitHub官网: https://github.com/settings/ssh 进行添加 SSH Keys 导航: Account Settings —> SSH keys —> Add SSH keys 如图所示:

测试是否成功

$ ssh -vT git@github.com 如果是以下提示:“Hi tinyvane! You’ve successfully authenticated, but GitHub does not provide shell access.” 证明你配置成功了。

设置用户信息

$ git config --global user.name “tinyvane” #GitHub用户名 $ git config --global user.email “tinyvane@gmail.com” #填写自己的邮箱

至此配置GitHub就已经完成了

hexo s 的时候遇到Unhandled rejection Error

遇到这个错误的时候比较奇怪,因为好像是莫名就出现的,google了一下,方法好像是因为主题更新了,但是npm也同样需要更新,或者反过来?我自己也没有特别明白,方法在这里

反正我是先通过rm -rf themes/next,然后重新 git submodule add https://github.com/iissnan/hexo-theme-next themes/next,解决的。

再次hexo s,顺利解决。

git add fatal: Pathspec is in submodule

当使用了上面的方式添加主题的时候,第一次总是需要修改一下主题下面的_config.yml文件的,但是当用git status查看的时候,发现themes/next被修改了,通过git add themes/next/_config.yml会遇到错误:git add fatal: Pathspec is in submodule

如下图所示:

fatal: Pathspec 'themes/next/_config.yml' is in submodule 'themes/next'

这个错误是因为 _config.yml 是位于 submodule 下的,不能在当前仓库下,提交 submodule 的文件更新,解决办法的出处在这里

其实办法很简单,就是进入到 submodule,然后 git add . 就可以了

cd themes/next
git add _config.yml
git commit -m 'update theme config'
cd ..
cd ..

两个cd就退回到了主体目录下,然后再次用git status查看的时候,会发现依然错误依旧,但是不要担心,再次执行git add themes/next,就可以顺利通过了。O YEAH~

具体过程截图见下方:

如何解决submodule的git add问题

有一篇文章(文章地址),讨论了submodule的坑的问题,看了一下,还不是很深入,放在这里,下次再继续学习。

参考资料