Soluções de Problemas

No caso de você ter problemas com o uso do Hexo, aqui está uma lista de soluções para alguns dos problemas mais frequentes. Se esta página não ajudar a resolver seu problema, tente fazer uma pesquisa no nosso GitHub ou no nosso Google Group.

YAML Parsing Error

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

Wrap the string with quotations if it contains colons.

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

Certifique-se de que está usando indentação por espaço (soft tabs) e adicione um espaço após os dois pontos.

Para mais informações, veja YAML Spec.

EMFILE Error

Error: EMFILE, too many open files

Embora o Node.js tenha I/O não bloqueante, o número máximo de I/O síncronas ainda é limitado pelo sistema. Você pode encontrar um erro EMFILE ao tentar gerar uma grande quantidade de arquivos. Você pode tentar executar o seguinte comando para aumentar o número de operações de I/O síncronas permitidas.

$ ulimit -n 10000

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 limits
  • 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
  1. 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
  1. Reboot

Processos com Pouca Memória

Quando você encontrar esse erro durante a geração:

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory

Aumente o tamanho da memória heap do Node.js alterando a primeira linha de hexo-cli (o comando which hexo encontra o arquivo).

#!/usr/bin/env node --max_old_space_size=8192

Out of memory while generating a huge blog · Issue #1735 · hexojs/hexo

Problemas de Deploy com Git

RPC failed

error: RPC failed; result=22, HTTP code = 403

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

Certifique-se de ter configurado o git corretamente no seu computador ou tente usar a URL HTTPS do repositório ao invés da URL SSH.

Error: ENOENT: no such file or directory

If you get an error like Error: ENOENT: no such file or directory it’s probably due to mixing uppercase and lowercase letters in your tags, categories, or filenames. Git cannot automatically merge this change, so it breaks the automatic branching.

To fix this, try

  1. Check every tag’s and category’s case and make sure they are the same.
  2. Commit
  3. Clean and build: ./node_modules/.bin/hexo clean && ./node_modules/.bin/hexo generate
  4. Manually copy the public folder to your desktop
  5. Switch branch from your master branch to your deployment branch locally
  6. Copy the contents of the public folder from your desktop into the deployment branch
  7. Commit. You should see any merge conflicts appear that you can manually resolve.
  8. Switch back to your master branch and deploy normally: ./node_modules/.bin/hexo deploy

Problemas de Servidor

Error: listen EADDRINUSE

Você pode ter iniciado dois servidores do Hexo ao mesmo tempo ou pode haver outro aplicativo usando a mesma porta. Tente modificar a configuração port ou iniciar o servidor do Hexo com o argumento -p.

$ hexo server -p 5000

Problemas na Instalação de Plugins

npm ERR! node-waf configure build

Este erro pode ocorrer ao tentar instalar um plugin escrito em C, C++ ou outra linguagem diferente de JavaScript. Verifique se você instalou o compilador correto em seu computador.

Error com 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' }

A instalação do DTrace pode ter problemas, use isso:

$ npm install hexo --no-optional

Veja a issue #1326 no Github.

Iterando o Modelo de Dados em Jade ou Swig

A Hexo usa [Warehouse][] para o seu modelo de dados. Ele não é um array, então você pode ter que transformar objetos em iteráveis.

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

Dados não Atualizados

Alguns dados não podem ser atualizados ou os arquivos recém-gerados são idênticos aos da última versão. Limpe o cache e tente novamente.

$ hexo clean

Nenhum Comando é Executado

Quando você não consegue executar nenhum comando do Hexo, com exceção de help, init e version, isso pode estar acontecendo pela falta do hexo no package.json:

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

Conteúdo Escapando

O Hexo usa [Nunjucks][] para renderizar posts ([Swig][] foi usado na versão mais antiga, que compartilha uma sintaxe semelhante). O conteúdo delimitado com {{ }} ou {% %} será “parseado” e pode causar problemas. Você pode empacotar um conteúdo sensível com a tag plugin raw, single backtick `{{ }}` or triple backtick. Alternatively, Nunjucks tags can be disabled through the renderer’s option (if supported), API or front-matter.

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

ENOSPC Error (Linux)

Às vezes, ao executar o comando $ hexo server é retornado o seguinte erro:

Error: watch ENOSPC ...

Isto pode ser consertado através do comando $ npm dedupe ou, se isso não funcionar, tente o seguinte comando no terminal do Linux:

$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Isso aumentará o limite do número de arquivos que você pode assistir.

EMPERM Error (Windows Subsystem for Linux)

Ao executar $ hexo server em um ambiente BashOnWindows, ele retorna o seguinte erro:

Error: watch /path/to/hexo/theme/ EMPERM

Infelizmente, o WSL (Windows Subsystem for Linux) atualmente não suporta os observadores (watchers) do sistema de arquivos. Portanto, o recurso de atualização em tempo real do servidor do Hexo não está disponível no momento. Contudo, ainda é possível executar o servidor a partir de um ambiente WSL, primeiro gere os arquivos e depois execute servidor em modo estático:

$ hexo generate
$ hexo server -s

Este é um problema no BashOnWindows conhecido, e em 15 de agosto de 2016, a equipe do Windows disse que eles trabalhariam nisso. Você pode obter atualizações de progresso e encorajá-los a priorizá-lo na página UserVoice do problema.

Erro de Renderização de Template

Às vezes, ao executar o comando $ hexo generate, ele retorna um erro:

FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html Template render error: (unknown path)

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. [`