トラブルシューティング

Hexoの使用で問題が発生した場合、よくある問題に対する解決策を以下にリストアップします。このページで問題が解決しない場合は、GitHubまたはGoogle グループで検索してみてください。

YAML構文解析エラー

JS-YAML: incomplete explicit mapping pair; a key node is missed at line 18, column 29:
last_updated: Last updated: %s

コロンを含む文字列は、引用符で囲んでください。

JS-YAML: bad indentation of a mapping entry at line 18, column 31:
last_updated:"Last updated: %s"

ソフトタブを使用し、コロンの後にスペースを追加してください。

詳細はYAML仕様を参照してください。

EMFILEエラー

Error: EMFILE, too many open files

Node.jsはノンブロッキングI/Oですが、同期I/Oの最大数はシステムによって制限されています。大量のファイル生成を試行すると、EMFILEエラーが発生することがあります。以下のコマンドを実行して、許可される同期I/O操作の数を増やすことができます。

$ ulimit -n 10000

エラー: 制限を変更できません

次のエラーが発生した場合

$ ulimit -n 10000
ulimit: open files: cannot modify limit: Operation not permitted

これは、システム全体の構成によって、ulimitを特定の制限まで増やすことができないことを意味します。

制限を上書きするには

  1. 「/etc/security/limits.conf」に次の行を追加します。
* - nofile 10000

# '*' applies to all users and '-' set both soft and hard limits
  • 上記の設定は、場合によっては適用されないことがあります。「/etc/pam.d/login」と「/etc/pam.d/lightdm」に次の行があることを確認してください。(これらのファイルが存在しない場合は、この手順を無視してください)
session required pam_limits.so
  1. あなたがsystemdベースのディストリビューションを使用している場合、systemdが「limits.conf」を上書きすることがあります。systemdで制限を設定するには、「/etc/systemd/system.conf」と「/etc/systemd/user.conf」に次の行を追加します。
DefaultLimitNOFILE=10000
  1. 再起動

プロセスメモリ不足

生成中にこのエラーが発生した場合

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

fatal: 'username.github.io' does not appear to be a git repository

コンピュータにGitが正しく設定されていることを確認するか、HTTPSリポジトリURLを使用してみてください。

エラー: ENOENT: そのようなファイルまたはディレクトリはありません

Error: ENOENT: no such file or directoryのようなエラーが発生した場合、タグ、カテゴリ、またはファイル名で大文字と小文字を混在させている可能性があります。Gitはこの変更を自動的にマージできないため、自動ブランチングが中断されます。

これを修正するには、次の手順を試してください。

  1. すべてのタグとカテゴリの大文字と小文字を確認し、同じであることを確認します。
  2. コミット
  3. クリーンとビルド: ./node_modules/.bin/hexo clean && ./node_modules/.bin/hexo generate
  4. publicフォルダをデスクトップに手動でコピーします。
  5. ローカルでマスターブランチからデプロイブランチにブランチを切り替えます。
  6. デスクトップからpublicフォルダの内容をデプロイブランチにコピーします。
  7. コミットします。マニュアルで解決できるマージの競合が表示されます。
  8. マスターブランチに戻り、通常どおりデプロイします: ./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' }
{ [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]を使用しています。配列ではないため、オブジェクトを反復可能に変換する必要がある場合があります。

{% for post in site.posts.toArray() %}
{% endfor %}

データが更新されない

一部のデータは更新できないか、新しく生成されたファイルが以前のバージョンと同一です。キャッシュをクリアして、再試行してください。

$ hexo clean

コマンドが実行されない

helpinitversion以外のどのコマンドも機能せず、hexo helpの内容が表示され続ける場合は、package.jsonhexoがないことが原因である可能性があります。

{
"hexo": {
"version": "3.2.2"
}
}

コンテンツのエスケープ

Hexoは投稿のレンダリングに[Nunjucks]を使用しています(古いバージョンでは[Swig]が使用されており、同様の構文を共有しています)。{{ }}または{% %}で囲まれたコンテンツは解析され、問題が発生する可能性があります。rawタグプラグイン、単一のバッククォート`{{ }}`、またはトリプルバッククォートで囲むことで、解析をスキップできます。
あるいは、レンダラのオプション(サポートされている場合)、API、またはフロントマターを使用して、Nunjucksタグを無効にすることができます。

{% raw %}
Hello {{ world }}
{% endraw %}
```
Hello {{ world }}
```

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
$ hexo server -s

これは既知の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
Template render error: (unknown path)

考えられる原因

  • ファイルに認識できない単語(例:不可視のゼロ幅文字)が含まれています。

  • タグプラグインの誤った使用または制限。

    • コンテンツを含むブロックスタイルのタグプラグインが{% endplugin_name %}で囲まれていません。
    # Incorrect
    {% codeblock %}
    fn()
    {% codeblock %}

    # Incorrect
    {% codeblock %}
    fn()

    # Correct
    {% codeblock %}
    fn()
    {% endcodeblock %}
    • タグプラグインにNunjucksのような構文が含まれている(例:`