Hexo 問題解答

2020-10-20 17:10 更新

問題解答

在使用 Hexo 時,您可能會遇到一些問題,下列的常見問題解答可能會對您有所幫助。如果您在這里找不道解答,可以在 GitHubGoogle 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:
  1. 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
  1. 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
  1. 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

參考 #1326


在 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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號