ถ้าหากว่าคุณพบเจอปัญหาเมื่อใช้ 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
และถูกอนุญาตแล้ว
$ ulimit -n 10000 |
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 ถูกหยุดไป
เพื่อแก้ไขข้อผิดพลาดนี้ ลองทำตามขั้นตอนต่อไปได้:
- 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
$ hexo server -p 5000 |
Plugin Installation Problems
npm ERR! node-waf configure build |
ข้อผิดำพลาดนี้เกิดขึ้นเมื่อคุณลองใช้ปลั๊กอินท่ีเขียนด้วยภาษา C, C++ หรือ
ภาษาอื่นๆ ท่ีไม้ใช่ javascript คุณต้องทำให้แน่ใจว่าได้ติดตั้ง compiler
ท่ีถูกต้องแล้วในคอม
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
{% for post in site.posts.toArray() %} |
Data Not Updated
data บางอย่างอัพเดทไม่ได้ หรือไฟล์ท่ี generate
ใหม่นั้นเหมือกับไฟล์ของเวอร์ชั่นล่าสุด ถ้าเป็นอย่างนี้ กรุณาเคลีย cache
และลองอีกครั้ง
$ hexo clean |
No command is executed
ุถ้าคุณไม่สามารถรันคำสั่งนอกจาก help
init
และ version
และผลท่ีส่งกลับจากคำสั่งนั้นมีแต่เนื้อหาของ hexo help
ปัญหานี้อาจเกิดจากการขาดแคลน hexo
ในไฟล์ package.json
:
{ |
Escape Contents
hexo ใช้ Nunjucks เพื่อ render โพสต์ (ในเวอร์ชั่นเก่าใช้ Swig ซึ่งมี
syntax เหมือนกัน) เนื้อหาที่ห่อด้วย {{ }}
หรือ {% %}
อาจจะถูก parse ไม่ถูกต้องและเกิดปัญหาบ้าง
เพื่อป้องกันเรื่องนี้เกิดขึ้น คุณสามารถติดตั้งปลั๊กอินแท็ก raw
และห่อเนื้อหาท่ีอาจจะถูก parse ไม่ถูกต้องนั้นด้วยแท็กนี้
{% raw %} |
ENOSPC Error (Linux)
บางทีเมื่อรันคำสั่ง $ hexo server
ผลท่ีส่งกลับมาเป็นข้อผิดพลาด:
Error: watch ENOSPC ... |
ข้อผิดพลาดนี้แก้ไขได้โดยคำสั่ง $ nom dedupe
ถ้าคำสั่งนี้แก้ไขข้อผิดพลาดนี้ไม่ได้ ลองรันคำสั่งต่อไปใน console ของ Linux:
$ 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 ไฟล์ก่อนแลัวรันเซร์ฟเวอร์แบบคงที่:
$ hexo generate |
นี่คือ a known BashOnWindows issue
และในวันท่ี 15 สิงหาคมของปี 2559 ทีมงาน Windows
กล่าวว่าจะมุ่งแก้ไขเรื่องนี้ให้ได้
คุณสามารถรู้ความคืบหน้าของการแก้ไขเรื่องนี้และยกระดับ priority ในเพจ 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 |
ถ้าเป็นอย่างนี้ หมายความว่ามีคำบางคำท่ีอ่านไม่ออกในไฟล์ เหตุผลท่ีก่อให้เกิดเรื่องนี้คือสองอย่าง อย่างแรกคือ page/post ใหม่ของคุณ อย่างท่ีสองคือ _config.yml
ในไฟล์ _config.yml
อย่่าลืมเพิ่ม whitespace ก่อนไฟล์ท่ีเป็น hash ท่ีนี่มีเพจวิกิเกี่ยวกับ YAML
ตัวท่ีผิดพลาด:
plugins: |
ตัวท่ีถูกต้อง:
plugins: |