Cameologist

Tina的小站,随机胡诌&科研笔记。调试中...

0%

Hexo部署到GitHub的时候出错原因分析

记录一次报错及解决。

利用hexo s开启本地预览,打开http://localhost:4000查看网页预览的时候,macOS可能跳出一个框问你是不是要保存什么乱七八糟的(记不清了)。当时随手选了“是”,结果调试好网站后,用hexo d部署到GitHub的时候出错了:

1
2
3
4
5
6
7
8
FATAL {
err: [Error: ENOTEMPTY: directory not empty, rmdir '/Users/tinaliu/Documents/xxx/xxx/x/.deploy_git/categories/coding'] {
errno: -66,
code: 'ENOTEMPTY',
syscall: 'rmdir',
path: '/Users/tinaliu/Documents/xxx/xxx/x/.deploy_git/categories/coding'
}
} Something's wrong. Maybe you can find the solution here: %s https://hexo.io/docs/troubleshooting.html

按照报错,.deploy_git下面的这个文件夹应该是空的。打开.deploy_git一看,发现里面有完整的博客数据,文件名为iCloud index之类的(记不清了)。

解决办法

删除整个.deploy_git文件夹,再hexo g,hexo d,就成功了。

原因分析

经过Google相关报错,发现有网友遇到过类似问题。

因为在本地在执行hexo g后,会在博客根目录下生成一个public文件夹,这个文件夹里的文件组合起来就是一个完整的静态博客。执行本地预览hexo s之后,因为选了macOS提供的选项,这个文件夹中的数据应该被备份到了iCloud中,并将某种index储存至.deploy_git文件夹中。

正常情况下,如果执行hexo d,就会把这个public文件夹的东西完完整整地拷贝到.deploy_git文件夹里,并把该文件夹里的所有文件全部推送push到远程库。但现在由于iCloud的某种操作,该文件夹存了index,所以执行hexo d,拷贝之前检查文件夹会报错说文件夹不是空的。

所以此时删掉.deploy_git文件夹即可成功执行hexo d。