文章更新
- 20160406-初稿
- 20160517-加入hexo s生成错误
Hexo is running at http://0.0.0.0:4000/
最近几次在自己的PC上,运行hexo s后一切正常,但是进入浏览器里面输入localhost:4000一片空白。


搜索了一下,排在搜索引擎前面的答案没啥用。正确的原因是因为4000端口被占用了,一般谁会占用呢,目前来看是被Foxit福昕浏览器占用了。
解决办法很简单,Windows平台下CTRL+R,运行cmd,然后通过命令netstat -ano |findstr 4000查看端口的占用情况。

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

可以看到EXE对应的程序名字是FoxitProtect.exe,一眼就能知道是福昕浏览器的保护进程。
关闭CMD窗口,再次运行CTRL+R,输入Services.msc进入服务(通过控制面板进入服务是一样的)。

把它关掉,不自动启动。

这样,再次cmd执行netstat -ano | findstr 4000的时候,就会发现没有进程占用了,可以正大光明的hexo s了。
PS: 如果在服务或者任务管理器中都找不到该程序,手动杀死即可。
命令如下:
taskkill -PID <进程号> -F //强制关闭某个进程
Hexo g的时候遇到Warn: No layout

因为缺少模板,进入Hexo目录,执行
$ git clone https://github.com/iissnan/hexo-theme-next themes/next
即可,不过要看看_config.yml文件里模板指定和下载的主题是否一致。
ERROR Deployer not found: git
这个问题也是最近折腾的时候才发现的,我就不说具体怎么弄明白了,直接上方法
- 确定你的_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
如下图所示:

这个错误是因为 _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的坑的问题,看了一下,还不是很深入,放在这里,下次再继续学习。