Читайте документы, поиск не работает
Я пытаюсь написать документацию, используя Sphinx в сочетании с темой read the docs, но функция поиска, похоже, не работает.
Я использую Python 3.7 с последней версией Sphinx и темой Read the Docs (обе установлены с pip install
) в Windows 10. После создания страницы и открытия index.html в браузере (пробовал Edge и Chrome) я не могу искать мою автономную документацию. Страница поиска открывается, но показывает только анимацию Search -> Search . -> Search .. -> Search …
Если я верну тему на стандартную тему, поиск будет работать без проблем.
Поскольку поиск работает для стандартных тем, он не является проблемой, связанной с браузером, и не связан с тем фактом, что я не размещаю страницу на localhost.
Если я смотрю на ошибки в консоли, я вижу две ошибки
jquery.js:4 Failed to load file:///C:/user/documentation/_build/html/searchindex.js:
Cross origin requests are only supported for protocol
schemes: http, data, chrome, chrome-extension, https.
а также
searchtools.js:144 Uncaught ReferenceError: Stemmer is not defined
at Object.query (searchtools.js:144)
at Object.setIndex (searchtools.js:83)
at searchindex.js:1
Я не смог найти ничего полезного для решения этой проблемы при поиске в Интернете. Также обновляю кеш браузера (Ctrl + F5
), как описано в https://github.com/rtfd/readthedocs.org/issues/4026, не работает.
Кто-нибудь испытывал такую же проблему?
1 ответ
Я решил проблему с помощью следующего решения ( https://github.com/rtfd/sphinx_rtd_theme/pull/672/commits/4b9053cb9e805211f227399d66d82361b3e2bf56).
Кредит идет на пользователя GitHub @tk0miya.
Сначала перейдите в папку установки Python и найдите layout.html
внутри ./Lib/site-packages/sphinx_rtd_theme/layout.html
,
Затем заменить строку 191 - 204, содержащую
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'{{ url_root }}',
VERSION:'{{ release|e }}',
LANGUAGE:'{{ language }}',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'{{ '' if no_search_suffix else file_suffix }}',
HAS_SOURCE: {{ has_source|lower }},
SOURCELINK_SUFFIX: '{{ sourcelink_suffix }}'
};
</script>
{%- for scriptfile in script_files %}
<script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
{%- endfor %}
по следующему коду
{% if sphinx_version >= "1.8.0" %}
<script type="text/javascript" id="documentation_options" data-url_root="{{ pathto('', 1) }}" src="{{ pathto('_static/documentation_options.js', 1) }}"></script>
{%- for scriptfile in script_files %}
{{ js_tag(scriptfile) }}
{%- endfor %}
{% else %}
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'{{ url_root }}',
VERSION:'{{ release|e }}',
LANGUAGE:'{{ language }}',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'{{ '' if no_search_suffix else file_suffix }}',
HAS_SOURCE: {{ has_source|lower }},
SOURCELINK_SUFFIX: '{{ sourcelink_suffix }}'
};
</script>
{%- for scriptfile in script_files %}
<script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
{%- endfor %}
{% endif %}
Тогда беги make clean
а также make html
внутри вашей папки с документацией для консоли. Важно, чтобы консольные команды выполнялись внутри вашей папки с документацией.