关于hexo框架部署到GitHub时Spawn Failed的问题研究
问题
和往常一样对blog文件夹下的文件进行修改后,在VS code终端执行hexo clean && hexo g && hexo d 的时候,产生了
1 | fatal: unable to access 'https://github.com/NanamiAkari/NanamiAkari.github.io.git/': Recv failure: Connection was reset |
的报错,重试了很多次,也还是没能解决。报错如下图:
可能原因
终端没有经过代理
因为Github有时候需要科学上网,所以有一个代理能提升上传速度,有时候出现报错的原因就是终端没有经过代理。
要为终端设置代理,可以在终端中输入以下命令:
1 | //vscode 终端 |
计算机本地端口查看:电脑屏幕右下角wifi标志右键->网络和Internet设置->代理->手动设置代理->编辑,就可以看到计算机本地的IP地址和端口
这样就设置好了终端的代理。
上传时候自己账号的Github网页没有关闭
再执行hexo d命令的时候本地与Github进行连接,自己账号登录的Github网页可能会影响本地与GitHub的连接,关闭网页重试即可上传成功。
.deploy_git文件夹
查询资料后发现可能的原因是.deploy_git文件夹的存在,hexo d命令是把渲染生成的.deploy_git文件夹push到github。
报错可能是因为push的时候旧的deploy_git和新生成的deploy_git文件夹内容有冲突导致,解决方案就是将其删除然后重复上述操作。
详细可参考CSDN上的大佬发布的一篇博客
环境问题
实际操作中,在VS code终端执行hexo clean && hexo g && hexo d 命令无果并产生报错,但是使用git的方法执行命令就能顺利执行了。
实测git-bash.exe和git-cmd.exe都可以成功执行命令,出现百分制的进度就大概率成功了。
Github公钥出现错误或者没有公钥
出现spawn failed报错的原因还有可能是Github公钥出现错误或者没有公钥,所以无法建立本地与GitHub的连接。
明白了原因就可以实施解决方案了:
打开git-cmd.exe,输入以下命令:
1 | ssh -T git@github.com |
用于检测是否能够与GitHub建立连接,出现以下结果:
就说明可能是Github公钥出现错误或者没有公钥,这时候我们首先在本地创建SSH keys,输入以下命令:
1 | ssh-keygen -t rsa -C "yourmail" # yourmail为Github注册时使用的邮箱 |
来创建本地SSH,第一处输入为创建本地SSH的目录,默认为:C:\Users{你的用户名}/.ssh/id_rsa;第二处输入为SSH的passphrase就是密码,回车就是不设置密码,第三处输入为确认密码。
如果原来本地就有SSH的话,可能会出现文件已存在是否覆盖的选项,选择”y”覆盖即可,然后就会生成新的本地SSH
然后进入文件浏览器找到这个SSH文件并用记事本打开,复制其中内容:
接着进入你的GitHub账号,点击右上角的你的头像,选择settings:
然后在左边选项栏找到SSH and GPG keys,选中后在SSH keys一栏右边选择New SSH key来创建新的公钥:
创建完成后,在git_cmd.exe中输入以下命令再次测试连接是否成功,出现以下结果就是连接成功了:
1 | ssh -T git@github.com |
这时候再部署到GitHub就可以成功了。
其他
如果上述方法都解决不了的话,可以尝试查阅官方文档