gitbook熱更新時報錯operation not permitted
在使用gitbook
寫東西的時候,當文件內容有更新的時候,會自動更新內容到頁面上,方便預覽。但是,存在一個bug,就是會神奇的崩潰掉,出現如下的錯誤提示:
Restart after change in file README.md
Stopping server
events.js:183
throw er; // Unhandled 'error' event
^
Error: EPERM: operation not permitted, lstat 'F:\workspace\private-cloud-backup\gitbook-test\_book'
解決方案也很簡單,重新執行一下gitbook serve
網上搜一下,有沒有現在的解決方案
遇到問題,首先問問百度谷歌,畢竟是面向搜尋引擎的開發人員嘛。
網上有大佬對這個事故,做了深入的分析,分析過程很詳細,我就不說了,重點引用一下結論:
windows 系統上啟動 gitbook 服務後,如果本地檔案發生更改,熱加會失敗.
如果啟動伺服器後立即刪除 _book 目錄,那麼之後再怎麼修改本地檔案都能順利重啟.
目前還沒有找到問題的根源,下一次將深入原始碼繼續探討到底是哪裡出問題導致 Windows 系統無法重啟.
雖然及時刪除 _book 目錄並不算是很好的解決方案,但至少 markdown 灰姑娘又能化妝成 html 小姐姐了呢!
有興趣的朋友可以閱讀一下原文 https://juejin.cn/post/6844903840332939277
雖然大佬分析的很詳細,但是也沒能從中找到一個簡單的可執行方案。
換種思路,解決問題
回過頭來,換一種思路再來考慮這個問題,我們使用gitbook
是為了寫作,而gitbook serve
只是為了讓我們可以隨時預覽自己的寫作結果。當出現問題時,我們的手工解決方案是重啟一即可,那我們能不能讓他崩潰時自動重啟呢?
關於自動重啟的方案,首先想到的是守護程序。關於守護程序,要麼自己寫一個,要麼網上找一個,感覺這都太重了,不是我想要的。於是又瞭解了一下bat
批處理指令碼能不能解決,你別說,還真可以:
::該指令碼為啟動gitbook本地伺服器,當服務崩潰時會自動重啟 @echo off :rungitbook call gitbook serve @goto rungitbook
將以上程式碼,在文件目錄儲存為gitbook.serve.bat
,然後雙擊執行。當gitbook serve
崩潰時,會自動重新啟動。
至此,問題就算是解決了。
其它
常用命令
命令 | 說明 |
---|---|
gitbook init | 在當前目錄初始化gitbook 目錄結構 |
gitbook build | 將文件編譯為html檔案 |
gitbook serve | 啟動gitbook 服務 |
釋出到Github
釋出到Github只需要git push
即可。這種方式只能將文件同步到Github
上,我們還需要將編譯結果直接作為網頁釋出,這裡推薦使用gh-pages
。
使用
gh-pages
只是將指定目錄釋出到gh-pages
分支,你首先需要在Github
上建立相應倉庫。
安裝
gh-pages
是一個nodejs包,首先你需要安裝nodejs環境。
然後,執行以下命令安裝gh-pages
。
npm install -g gh-pages
釋出到gh-pages
安裝好gh-pages
後,就可以使用gh-pages
將編譯結果釋出到Github上了。
gh-pages -d _book