此解決方法不一定是正確的解法,只是試了各種方法這個方法行得通~

昨天想要更新部落格的時候突然失敗了嗚嗚嗚
失敗原因如下:

1
2
3
4
5
6
7
8
FATAL {
err: Error: Spawn failed
at ChildProcess.<anonymous> (/Users/isadora/Desktop/Blog/node_modules/hexo-util/lib/spawn.js:51:21)
at ChildProcess.emit (node:events:394:28)
at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12) {
code: 128
}
} Something's wrong. Maybe you can find the solution here: %s https://hexo.io/docs/troubleshooting.html

突然想到前陣子在更新的時候有一次也是突然出現了這個失敗訊息,不過那時候我的解法是把整個倉庫刪掉重建,不知道怎麼搞的突然就好了,但是這次好像就沒有那麼幸運了嗚嗚

我就重複上次的步驟把倉庫刪掉重建一次但是還是失敗了,還因此喪失了我的寶貴提交紀錄嗚嗚嗚,還記得原本有一百多次呢哭哭

後來我上網查,發現好多人也有類似的問題,也是突然佈署失敗
有人說是公鑰問題,或是佈署地點設置問題,也有人說是github在認證方面做了調整

最後的解決辦法是設置ssh啦~

解決辦法

尋找.ssh資料夾

先找找你是否有 .ssh 的隱藏資料夾

如果是直接找資料夾的朋友檔案總管、finder記得要打開顯示隱藏的檔案才找得到喔!

1
$ cd ~/.ssh

生成密鑰

your_email@example.com是要打自己的email喔!

1
$ ssh-keygen -t rsa -C "your_email@example.com"

輸入後接著會看到:

1
2
Generating public/private rsa key pair.
Enter file in which to save the key (/home/you/.ssh/id_rsa):

/home/you/.ssh/id_rsa 不一定一樣
如果是要使用默認的位置直接按enter即可

接著你會看到:

1
2
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

如果不要設置的話也可以直接按enter喔!

接著看到這個就生成成功啦!

1
2
3
4
Your identification has been saved in /home/you/.ssh/id_rsa.
Your public key has been saved in /home/you/.ssh/id_rsa.pub.
The key fingerprint is:
…………………此處是密鑰內容…………………… your_email@example.com

設置密鑰

接著你可以去.ssh資料夾內有一個id_rsa.pub的檔案,將裡面的內容全選後複製

再來到你的github部落格倉庫的設定中點擊 Settings –> Deploy keys –> Add deploy key
將剛剛複製的內容貼上去,並且記得要勾選下方個勾勾(不然沒辦法access會失敗喔)!

測試配置

接著在終端機輸入以下內容來測試一下配置是否成功

1
$ ssh -T git@github.com

得到以下回應就是成功啦!

1
2
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

設定提交位置

接著在部落格配置文件中修改一下提交地址:

username是自己的github id喔!

1
2
3
4
deploy:
type: git
repo: git@github.com:username/username.github.io.git
branch: master

.ssh中新增config.yml

這一個步驟其實我也不知道到底要不要做,或是會不會影響什麼,不過我因為是嘗試所有的方法才成功的所以我是有做這個步驟的~參考 參考

在.ssh新增config.yml並新增以下內容:

1
2
3
4
5
6
Host github.com
User 你GitHub的邮箱
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

接著應該就可以成功啦!!

小小心得

其實第一次遇到這個問題的時候我那時候印象中我也有執行生成密鑰這個步驟,不過僅局限於”生成“哈哈,因為後面我就沒繼續了,最後我是把整個倉庫刪掉重建才得以解決的
不過昨天又再一次遇到了這個問題,剛開始碰到超級崩潰,網路搜尋了好多種方法,大家解法雖然不外乎就是那幾種,但小細節上還是不一樣的,所以搞得我好矇哭哭
最後是看到網路上佈署是用ssh佈署的所以嘗試了一下,終於成功了!!炒雞開心呀!!

雖然成功了,不過還是要說一下,其實具體到底什麼原因我也不知道,會不會再出現這個問題我不知道QQ
再加上網路上大神解法都還是有一點點的差異,所以還是要仔細看一下錯誤是否一樣,也要大概了解一下每個步驟到底在幹嘛!(搜尋hexo d 佈署失敗或是 error spawned就會有很多相關文章啦!)

相關文章

  1. hexo发生error:spawn failed错误的解决方法
  2. 设置 SSH 使用 hexo deploy 时免输用户名密码
  3. GitHub 認證失敗,無法從遠端抓取資料