Hexoの使用で問題が発生した場合、よくある問題に対する解決策を以下にリストアップします。このページで問題が解決しない場合は、GitHubまたはGoogle グループで検索してみてください。
YAML構文解析エラー
JS-YAML: incomplete explicit mapping pair; a key node is missed at line 18, column 29: |
コロンを含む文字列は、引用符で囲んでください。
JS-YAML: bad indentation of a mapping entry at line 18, column 31: |
ソフトタブを使用し、コロンの後にスペースを追加してください。
詳細はYAML仕様を参照してください。
EMFILEエラー
Error: EMFILE, too many open files |
Node.jsはノンブロッキングI/Oですが、同期I/Oの最大数はシステムによって制限されています。大量のファイル生成を試行すると、EMFILEエラーが発生することがあります。以下のコマンドを実行して、許可される同期I/O操作の数を増やすことができます。
$ ulimit -n 10000 |
エラー: 制限を変更できません
次のエラーが発生した場合
$ ulimit -n 10000 |
これは、システム全体の構成によって、ulimit
を特定の制限まで増やすことができないことを意味します。
制限を上書きするには
- 「/etc/security/limits.conf」に次の行を追加します。
* - nofile 10000 |
- 上記の設定は、場合によっては適用されないことがあります。「/etc/pam.d/login」と「/etc/pam.d/lightdm」に次の行があることを確認してください。(これらのファイルが存在しない場合は、この手順を無視してください)
session required pam_limits.so |
- あなたがsystemdベースのディストリビューションを使用している場合、systemdが「limits.conf」を上書きすることがあります。systemdで制限を設定するには、「/etc/systemd/system.conf」と「/etc/systemd/user.conf」に次の行を追加します。
DefaultLimitNOFILE=10000 |
- 再起動
プロセスメモリ不足
生成中にこのエラーが発生した場合
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory |
hexo-cli
(ファイルを探すにはwhich hexo
)の最初の行を変更して、Node.jsのヒープメモリサイズを増やしてください。
#!/usr/bin/env node --max_old_space_size=8192 |
巨大なブログを生成中のメモリ不足 · Issue #1735 · hexojs/hexo
Gitデプロイの問題
RPC失敗
error: RPC failed; result=22, HTTP code = 403 |
コンピュータにGitが正しく設定されていることを確認するか、HTTPSリポジトリURLを使用してみてください。
エラー: ENOENT: そのようなファイルまたはディレクトリはありません
Error: ENOENT: no such file or directory
のようなエラーが発生した場合、タグ、カテゴリ、またはファイル名で大文字と小文字を混在させている可能性があります。Gitはこの変更を自動的にマージできないため、自動ブランチングが中断されます。
これを修正するには、次の手順を試してください。
- すべてのタグとカテゴリの大文字と小文字を確認し、同じであることを確認します。
- コミット
- クリーンとビルド:
./node_modules/.bin/hexo clean && ./node_modules/.bin/hexo generate
- publicフォルダをデスクトップに手動でコピーします。
- ローカルでマスターブランチからデプロイブランチにブランチを切り替えます。
- デスクトップからpublicフォルダの内容をデプロイブランチにコピーします。
- コミットします。マニュアルで解決できるマージの競合が表示されます。
- マスターブランチに戻り、通常どおりデプロイします:
./node_modules/.bin/hexo deploy
サーバーの問題
Error: listen EADDRINUSE |
同時に2つのHexoサーバーを起動したか、同じポートを使用している別のアプリケーションがある可能性があります。port
設定を変更するか、-p
フラグを使用してHexoサーバーを起動してみてください。
$ hexo server -p 5000 |
プラグインインストールの問題
npm ERR! node-waf configure build |
C、C++、その他の非JavaScript言語で記述されたプラグインのインストールを試行すると、このエラーが発生することがあります。コンピュータに適切なコンパイラがインストールされていることを確認してください。
DTraceに関するエラー(Mac OS X)
{ [Error: Cannot find module './build/Release/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' } |
DTraceのインストールに問題がある場合は、これを使用してください。
$ npm install hexo --no-optional |
#1326を参照してください。
JadeまたはSwigでのデータモデルの反復処理
Hexoはデータモデルに[Warehouse]を使用しています。配列ではないため、オブジェクトを反復可能に変換する必要がある場合があります。
{% for post in site.posts.toArray() %} |
データが更新されない
一部のデータは更新できないか、新しく生成されたファイルが以前のバージョンと同一です。キャッシュをクリアして、再試行してください。
$ hexo clean |
コマンドが実行されない
help
、init
、version
以外のどのコマンドも機能せず、hexo help
の内容が表示され続ける場合は、package.json
にhexo
がないことが原因である可能性があります。
{ |
コンテンツのエスケープ
Hexoは投稿のレンダリングに[Nunjucks]を使用しています(古いバージョンでは[Swig]が使用されており、同様の構文を共有しています)。{{ }}
または{% %}
で囲まれたコンテンツは解析され、問題が発生する可能性があります。raw
タグプラグイン、単一のバッククォート`{{ }}`
、またはトリプルバッククォートで囲むことで、解析をスキップできます。
あるいは、レンダラのオプション(サポートされている場合)、API、またはフロントマターを使用して、Nunjucksタグを無効にすることができます。
{% raw %} |
``` |
ENOSPCエラー(Linux)
コマンド$ hexo server
を実行すると、エラーが返されることがあります。
Error: watch ENOSPC ... |
$ npm dedupe
を実行するか、それでも解決しない場合は、Linuxコンソールで次のコマンドを実行してみてください。
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p |
これにより、監視できるファイル数の制限が増加します。
EMPERMエラー(Windows Subsystem for Linux)
BashOnWindows環境で$ hexo server
を実行すると、次のエラーが返されます。
Error: watch /path/to/hexo/theme/ EMPERM |
残念ながら、WSLは現在、ファイルシステムウォッチャーをサポートしていません。そのため、hexoのサーバーのライブ更新機能は現在使用できません。ファイルを最初に生成してから、静的サーバーとして実行することで、WSL環境からサーバーを実行できます。
$ hexo generate |
これは既知のBashOnWindowsの問題であり、2016年8月15日、Windowsチームは対応すると述べています。問題のUserVoice提案ページで進捗状況の更新を入手し、優先順位を付けるよう促すことができます。
テンプレートレンダリングエラー
コマンド$ hexo generate
を実行すると、エラーが返されることがあります。
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.dokyumento.jp/docs/troubleshooting.html |
考えられる原因
ファイルに認識できない単語(例:不可視のゼロ幅文字)が含まれています。
タグプラグインの誤った使用または制限。
- コンテンツを含むブロックスタイルのタグプラグインが
{% endplugin_name %}
で囲まれていません。
# Incorrect
{% codeblock %}
fn()
{% codeblock %}
# Incorrect
{% codeblock %}
fn()
# Correct
{% codeblock %}
fn()
{% endcodeblock %}- タグプラグインにNunjucksのような構文が含まれている(例:`
- コンテンツを含むブロックスタイルのタグプラグインが