In case you’re experiencing problems with using Hexo, here is a list of solutions to some frequently encountered issues. ถ้าหากว่าคุณพบเจอปัญหาเมื่อใช้ hexo ท่ีนี่มีตารางของวิธีการแก้ปัญหาที่พบเจอบ่อยครั้ง ถ้าเกิดปัญหาท่ีไซตืนี้ไม่มี ลองค้นหาวิธีการแก้ไขปัญหาใน GitHub หรือ Google Group
YAML Parsing Error
JS-YAML: incomplete explicit mapping pair; a key node is missed at line 18, column 29: |
ปกคลุม string ด้วย quotation ถ้ามันมีเครื่องหมาย (:) อยู่ด้วย
JS-YAML: bad indentation of a mapping entry at line 18, column 31: |
ทำให้แน่ใจว่าคุณกำลังใช้ soft tab และเพิ่ม space หลังเครื่องหมาย (:)
สำหรับข้อมูลเพิ่มเติม ไปดูท่ี YAML Spec
EMFILE Error
Error: EMFILE, too many open files |
แม้ว่า Node.js มี I/O ท่ี non-blocking ปริมาณมากท่ีสุดของ I/O ท่ี synchronous ยังจำกัดอยู่เนื่องด้วยระบบของ hexo คุณอาจจะพบเจอข้อผิดพลาดท่ีเป็น EMFILE error ในเมื่อลอง generate ไฟล์เป็นจำนวนมาก คุณอาจจะลองรันคำสั่งต่อไปเพื่อเพิ่มจำนวนของ I/O operation ท่ี synchronous และถูกอนุญาตแล้ว You may come across an EMFILE error when trying to generate a large number of files. You can try to run the following command to increase the number of allowed synchronous I/O operations.
$ ulimit -n 10000 |
Error: cannot modify limit
If you encounter the following error:
$ ulimit -n 10000 |
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 |
- The 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 “limits.conf”. To set the limit in systemd, add the following line in “/etc/systemd/system.conf” and “/etc/systemd/user.conf”:
DefaultLimitNOFILE=10000 |
- Reboot
Process Out of Memory
เมื่อคุณพบข้อผิดพลาดนี้ในช่วง generation:
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory |
คุณเพิ่มขนาด heap memory ของ Node.js ได้ด้วยการเปลี่ยนบรรทัดแรกของ hexo-cli
(หาไฟล์นี้ได้ด้วยคำสั่ง which hexo
)
#!/usr/bin/env node --max_old_space_size=8192 |
Out of memory while generating a huge blog · Issue #1735 · hexojs/hexo
Git Deployment Problems
RPC failed
error: RPC failed; result=22, HTTP code = 403 |
คุณต้องตรวจให้แน่ใจว่าได้ตั้งค่า git อย่างถูกต้อง(set up git) ในคอม หรือลองใช้ URL ของ HTTPS repository แทน
Error: ENOENT: no such file or directory
ถ้าคุณพบข้อผิดพลาดท่ีว่า Error: ENOENT: no such file or directory
เหตุผลส่วนใหญ่จะเป็นการเขียนผิดอักษรตัวใหญ่กับตัวเล็กในแท็ก ประเภทหรือชื่อไฟล์ของคุณ git ไม่สามารถ merge การเปลี่ยนแปลงนี้ได้โดยอัตโนมัติ จึงทำให้การบวนการ automatic branching ถูกหยุดไป Git cannot automatically merge this change, so it breaks the automatic branching.
เพื่อแก้ไขข้อผิดพลาดนี้ ลองทำตามขั้นตอนต่อไปได้:
- Check every tag’s and category’s case and make sure they are the same.
- Commit
- Clean and build:
./node_modules/.bin/hexo clean && ./node_modules/.bin/hexo generate
- Manually copy the public folder to your desktop
- Switch branch from your master branch to your deployment branch locally
- Copy the contents of the public folder from your desktop into the deployment branch
- Commit. You should see any merge conflicts appear that you can manually resolve.
- Switch back to your master branch and deploy normally:
./node_modules/.bin/hexo deploy
Server Problems
Error: listen EADDRINUSE |
คุณอาจจะเปิด hexo server มากกว่าหนึ่งตัวในขณะเดียวกัน หรือแอปอื่นกำลังใช้ port เดียวกัน สำหรับการแก้ไขเรื่องนี้ลองแก้ไขการตั้งค่าของ port
หรือเปิดเซร์ฟเวอร์ hexo ใน port ท่ีตั้งค่าโดยแท็ก-p
Try to modify the port
setting or start the Hexo server with the -p
flag.
$ hexo server -p 5000 |
Plugin Installation Problems
npm ERR! node-waf configure build |
ข้อผิดำพลาดนี้เกิดขึ้นเมื่อคุณลองใช้ปลั๊กอินท่ีเขียนด้วยภาษา C, C++ หรือ ภาษาอื่นๆ ท่ีไม้ใช่ javascript คุณต้องทำให้แน่ใจว่าได้ติดตั้ง compiler ท่ีถูกต้องแล้วในคอม Make sure you have installed the right compiler on your computer.
Error with DTrace (Mac OS X)
{ [Error: Cannot find module './build/Release/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' } |
การติดตั้ง DTrace อาจจะพบ issue บ้าง กรุณาใช้คำสั่งต่อไป:
$ npm install hexo --no-optional |
สำหรับข้อมูลเพิ่มเติม ไปดูท่ี #1326
Iterate Data Model on Jade or Swig
hexo ใช้ [Warehouse][] เป็นแบบจำลองข้อมูล เนื้องจากว่ามันไม่ใช่ array ก็เลยคุณต้องเปลี่ยนจาก object ไปเป็น iterable It’s not an array so you may have to transform objects into iterables.
{% for post in site.posts.toArray() %} |
Data Not Updated
data บางอย่างอัพเดทไม่ได้ หรือไฟล์ท่ี generate ใหม่นั้นเหมือกับไฟล์ของเวอร์ชั่นล่าสุด ถ้าเป็นอย่างนี้ กรุณาเคลีย cache และลองอีกครั้ง Clean the cache and try again.
$ hexo clean |
No command is executed
ุถ้าคุณไม่สามารถรันคำสั่งนอกจาก help
init
และ version
และผลท่ีส่งกลับจากคำสั่งนั้นมีแต่เนื้อหาของ hexo help
ปัญหานี้อาจเกิดจากการขาดแคลน hexo
ในไฟล์ package.json
:
{ |
Escape Contents
hexo ใช้ [Nunjucks][] เพื่อ render โพสต์ (ในเวอร์ชั่นเก่าใช้ [Swig][] ซึ่งมี syntax เหมือนกัน) เนื้อหาที่ห่อด้วย {{ }}
หรือ {% %}
อาจจะถูก parse ไม่ถูกต้องและเกิดปัญหาบ้าง เพื่อป้องกันเรื่องนี้เกิดขึ้น คุณสามารถติดตั้งปลั๊กอินแท็ก You can skip the parsing by wrapping it with the raw
tag plugin, single backtick `{{ }}`
or triple backtick. Content wrapped with {{ }}
or {% %}
will get parsed and may cause problems. You can skip the parsing by wrapping it with the raw
tag plugin, a single backtick `{{ }}`
or a triple backtick. Alternatively, Nunjucks tags can be disabled through the renderer’s option (if supported), API or front-matter.
{% raw %} |
``` |
ENOSPC Error (Linux)
บางทีเมื่อรันคำสั่ง $ hexo server
ผลท่ีส่งกลับมาเป็นข้อผิดพลาด:
Error: watch ENOSPC ... |
It can be fixed by running $ npm dedupe
or, if that doesn’t help, try the following in the Linux console:
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p |
การรันคำสั่งดังกล่าวจะเพิ่มจำนวนไฟล์ท่ี hexo สามารถเฝ้าดูได้
EMPERM Error (Windows Subsystem for Linux)
เมื่อรัน $ hexo server
ในสภาพแวดล้อมของ BashOnWindows จะมีข้อผิดพลาดต่อไปส่งกลับมา:
Error: watch /path/to/hexo/theme/ EMPERM |
ท่ีน่าเสียดายคือ WSL ไม่สนับสนุน watcher ของระบบไฟล์ ดังนั้น คุณลักษณะการเฝ้าดูการเปลี่ยนแปลงไฟล์โดยไม่ต้องเปิดเชร์ฟเวอร์ใหม่นั้นของ hexo จะไม่สามารถใช้ประโยชน์ได้ แต่คุณยังรันเซร์ฟเวอร์ได้ภายในสภาพแวดล้อม WSL โดย generate ไฟล์ก่อนแลัวรันเซร์ฟเวอร์แบบคงที่: Therefore, the live updating feature of hexo’s server is currently unavailable. You can still run the server from a WSL environment by first generating the files and then running it as a static server:
$ hexo generate |
นี่คือ a known BashOnWindows issue และในวันท่ี 15 สิงหาคมของปี 2559 ทีมงาน Windows กล่าวว่าจะมุ่งแก้ไขเรื่องนี้ให้ได้ คุณสามารถรู้ความคืบหน้าของการแก้ไขเรื่องนี้และยกระดับ priority ในเพจ the issue’s UserVoice suggestion page You can get progress updates and encourage them to prioritize it on the issue’s UserVoice suggestion page.
Template render error
บางทีการรันคำสั่ง$ hexo generate
จะส่ง error กลับ:
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html |
Possible cause:
One possible reason is that there are some unrecognizable words in your file, e.g. invisible zero width characters.
Incorrect use or limitation of tag plugin.
- Block-style tag plugin with content is not enclosed with
{% endplugin_name %}
# Incorrect
{% codeblock %}
fn()
{% codeblock %}
# Incorrect
{% codeblock %}
fn()
# Correct
{% codeblock %}
fn()
{% endcodeblock %}- Having Nunjucks-like syntax in a tag plugin, e.g. [`
- Block-style tag plugin with content is not enclosed with