問題解答
在使用 Hexo 時,您可能會遇到一些問題,下列的常見問題解答可能會對您有所幫助。如果您在這里找不道解答,可以在 GitHub 或 Google Group 上提問。
YAML 解析錯誤
JS-YAML: incomplete explicit mapping pair; a key node is missed at line 18, column 29:
last_updated: Last updated: %s
如果 YAML 字符串中包含冒號(:)的話,請加上引號。
JS-YAML: bad indentation of a mapping entry at line 18, column 31:
last_updated:"Last updated: %s"
請確認(rèn)您使用空格進(jìn)行縮進(jìn)(Soft tab),并確認(rèn)冒號后有加上一個空格。
您可參閱 YAML 規(guī)范 以取得更多信息。
EMFILE 錯誤
Error: EMFILE, too many open files
雖然 Node.js 有非阻塞 I/O,同步 I/O 的數(shù)量仍被系統(tǒng)所限制,在生成大量靜態(tài)文件的時候,您可能會碰到 EMFILE 錯誤,您可以嘗試提高同步 I/O 的限制數(shù)量來解決此問題。
$ ulimit -n 10000
(這一命令只對Linux系統(tǒng)有效)
Error: cannot modify limit
If you encounter the following error:
$ ulimit -n 10000
ulimit: open files: cannot modify limit: Operation not permitted
It means some system-wide configurations are preventing ulimit to being increased to a certain limit.
To override the limit:- Add the following line to “/etc/security/limits.conf”:* - nofile 10000?# '*' applies to all users and '-' set both soft and hard limitsThe above setting may not apply in some cases, ensure “/etc/pam.d/login” and “/etc/pam.d/lightdm” have the following line. (Ignore this step if those files do not exist)session required pam_limits.so
- If you are on a systemd-based distribution, systemd may override “l(fā)imits.conf”. To set the limit in systemd, add the following line in “/etc/systemd/system.conf” and “/etc/systemd/user.conf”:DefaultLimitNOFILE=10000
- Reboot
Git 部署問題
RPC failed
error: RPC failed; result=22, HTTP code = 403
?
fatal: 'username.github.io' does not appear to be a git repository
請確認(rèn)您已經(jīng)在電腦上 配置 git,或改用 HTTPS 庫(repository)地址。
Error: ENOENT: no such file or directory
如果你遇到了這個錯誤,有可能是你的文件名、分類或者標(biāo)簽的名字混淆了大寫和小寫,你可以嘗試檢查每一個標(biāo)簽和分類的名稱,是否大小寫一致來修復(fù)這一問題。
服務(wù)器問題
Error: listen EADDRINUSE
您可能同時開啟兩個 Hexo 服務(wù)器,或者有其他應(yīng)用程序正在占用相同的端口,請嘗試修改 port 參數(shù),或是在啟動 Hexo 服務(wù)器時加上 -p 選項(xiàng)。
$ hexo server -p 5000
插件安裝問題
npm ERR! node-waf configure build
當(dāng)您嘗試安裝以 C/C++ 或其他非 JavaScript 語言所編寫的插件時,可能會遇到此類問題,請確認(rèn)您已經(jīng)在電腦上安裝相對應(yīng)的編譯器。
DTrace 錯誤 (Mac OS X)
{ [Error: Cannot find module './build/Release/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/Debug/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
DTrace 安裝可能有錯誤 , 使用下列命令:
$ npm install hexo --no-optional
在 Jade 或 Swig 遍歷資料
Hexo 使用 Warehouse 存儲資料,它不是一般數(shù)組所以必須先進(jìn)行類型轉(zhuǎn)型才能遍歷。
{% for post in site.posts.toArray() %}
{% endfor %}
資料沒有更新
有時資料可能沒有被更新,或是生成的文件與修改前的相同,您可以嘗試清除緩存并再執(zhí)行一次。
$ hexo clean
命令沒有執(zhí)行
如果你除了 hexo help、hexo init 和 hexo version 以外不能執(zhí)行任何命令、并且你的任何命令都只返回了 hexo help 的內(nèi)容,這可能是由于 package.json 中缺乏 hexo 字段導(dǎo)致的。
{
"hexo": {
"version": "3.9.0"
}
}
泄露(Escape)內(nèi)容
Hexo 使用 Nunjucks 來解析文章(舊版本使用 Swig,兩者語法類似),內(nèi)容若包含 {{ }} 或 {% %} 可能導(dǎo)致解析錯誤,您可以用 raw_blank 標(biāo)簽包裹,single backtick {{ }} 或 triple backtick 來避免潛在問題發(fā)生。
Alternatively, Nunjucks tags can be disabled through the renderer’s option (if supported), API or front-matter.
{% raw %}
Hello {{ world }}
{% endraw %}
```
Hello {{ world }}
```
ENOSPC 錯誤 (Linux)
運(yùn)行 $ hexo server 命令有時會返回這樣的錯誤:
Error: watch ENOSPC ...
它可以用過運(yùn)行 $ npm dedupe 來解決,如果不起作用的話,可以嘗試在 Linux 終端中運(yùn)行下列命令:
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
這將會提高你能監(jiān)視的文件數(shù)量。
EMPERM Error (Windows Subsystem for Linux)
在執(zhí)行 hexo server 后返回如下錯誤:
Error: watch /path/to/hexo/theme/ EMPERM
這是由于你使用的 WSL 版本不支持監(jiān)聽文件系統(tǒng)改動。 最新版的 WSL 已經(jīng)解決了這一問題。
您也仍然可以通過先使用 hexo g 生成文件然后將其作為靜態(tài)服務(wù)器運(yùn)行來從 WSL 環(huán)境運(yùn)行服務(wù)器:
$ hexo generate
$ hexo server -s
關(guān)于 WSL 的這一 Issue 請前往 此處 查看。目前這一問題已經(jīng)得到了解決。
模板渲染錯誤
有的時候你在執(zhí)行 hexo generate 時會返回以下錯誤信息:
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Template render error: (unknown path)
這表明你的文件中存在一些不可被識別的字符,比如不可見的零寬度字符。有可能你的新文章存在這個問題,或者你在修改配置文件時導(dǎo)致了這個錯誤。
檢查你的 _config.yml 文件中是否漏掉了列表前的空格。你可以查閱 Wikipedia 中 YAML 相關(guān)頁面來學(xué)習(xí) YAML 語法。
這個是錯誤的:
plugins:
- hexo-generator-feed
- hexo-generator-sitemap
正確的應(yīng)該是這樣:
plugins:
- hexo-generator-feed
- hexo-generator-sitemap
更多建議: