问题描述
今天心血来潮想试一下Hexo博客,按照网上教程,执行到hexo -d
这一命令时,突然出现报错Error: Spawn failed
,无法将生成好的博客静态文件上传到提前设置好的Github仓库,详细报错如下
fatal: Authentication failed for 'https://github.com/<username>/<username>.github.io.git/'
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
Error: Spawn failed
at ChildProcess.<anonymous> (E:\Documents\Documents\Hexo Blog\node_modules\hexo-util\lib\spawn.js:51:21)
at ChildProcess.emit (node:events:513:28)
at cp.emit (E:\Documents\Documents\Hexo Blog\node_modules\cross-spawn\lib\enoent.js:34:29)
at ChildProcess._handle.onexit (node:internal/child_process:291:12)
解决办法
方式一
有可能是git仓库地址填写错误,可以将https方式改成ssh方式,找到站点目录下的_config.yml
文件,找到deploy
配置,将https://github.com/<username>/<username>.github.io.git
改为git@github.com:<username>/<username>.github.io.git
deploy:
type: 'git'
# 把repo修改成下面的这样
repo: git@github.com:<username>/<username>.github.io.git
branch: main
修改之后再执行hexo d
,看是否解决问题
方式二
有可能是.deploy_git
文件夹有问题,这个文件夹是hexo在执行完hexo g
后生成的静态文件,最终执行hexo d
命令后会将这个文件夹下的文件上传到设置好的git仓库中,因此有可能是在执行hexo d
命令之前不小心改变了一下.deploy_git
文件夹下文件里的内容,导致了本地多了一些多余的东西,执行以下命令解决
# 进入站点根目录
cd hexo\ blog/
# 删除.deploy_git文件
rm -rf .deploy_git/
# 为了避免不同操作系统之间的行结束符混淆问题,Git会自动将文件中的CRLF转换为LF,这个命令使Git不进行自动的转换行末格式操作,即保持原有的行结束符格式,防止因为转换行末格式导致的部署失败
git config --global core.autocrlf false
# hexo cl 清除Hexo的缓存文件、hexo g 生成静态网页文件、hexo d 将静态文件部署到远程git仓库上
hexo cl && hexo g && hexo d
方式三
强制推送,忽略一切问题,将静态文件强制推送到git仓库上,并覆盖远程仓库
# 进入站点根目录
cd hexo\ blog/
# 进入.deploy_git文件夹
cd .deploy_git/
# 强制推送
git push -f
点击数:12
Comments NOTHING