Hexo博客执行hexo -d部署文件后出现Error: Spawn failed错误时的解决办法

发布于 6 小时前  0 次阅读


问题描述

  今天心血来潮想试一下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

点击数:0