RequireJS + Algolia Docsearch генерирует несовпадающее анонимное определение () .. ошибка - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь внедрить Algolia Docsearch с MadCap Flare.Flare - это инструмент технической документации, который генерирует вывод HTML.

Базовый сканер Docsearch настроен и правильно работает в codepen.Тем не менее, у меня возникла проблема интеграции с Flare.Flare имеет несколько встроенных скриптов, к которым я не могу получить доступ или изменить, в том числе require.js .Я получаю кучу ошибок, Uncaught Error: Несоответствующий анонимный модуль define () .. , когда я запускаю сборку.

Итак, чтобы исправить это, я попытался загрузить Docsearch js, используя require.js, что я делаю совершенно неправильно.Мои знания JS ограничены!

Входные данные для поиска в формате HTML:

<div class="input-group">
    <input id="<YOUR_CSS_SELECTOR>"  type="text" class="form-control" placeholder="Search" aria-label="Search Field" aria-describedby="infoSearch" />
</div>

Оригинальный CDN js и фрагмент Algolia Docsearch выглядит примерно так:

<!-- Before the closing </body> -->
    <script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js">
    </script>
    <script>
    docsearch({
        apiKey: '<API_KEY>',
        indexName: '<INDEX_NAME>',
        inputSelector: '<YOUR_CSS_SELECTOR>',
        debug: false
    });
    </script>

Итак, чтобы загрузить этисценарии, использующие require.js Я сделал следующее:

<script type="text/javascript">
require.config({
    enforceDefine: true,
    paths: {
        "docSearch": "https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"
    },
    waitSeconds: 40
});
require(['docSearch']);//This is probably not doing anything.
</script>
<script>
docsearch({
    apiKey: '<API_KEY>',
    indexName: '<INDEX_NAME>',
    inputSelector: '<YOUR_CSS_SELECTOR>',
    debug: false
}); //This throws "Uncaught Reference Error docsearch is not defined" error
</script>

Я просмотрел другие темы / вопросы, а также документацию require.js, но не смог найти то, что можно было бы выяснить.Любая помощь / руководство было бы здорово!

1 Ответ

0 голосов
/ 18 марта 2019

Я думаю, вы должны включить что-то вроде

    <script>
/* <![CDATA[ */

require.config( {
    paths: {
        "docsearchLib": "https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min"
    }
}

);
require(["docsearchLib"], function(docsearch) {
    docsearch( {
        apiKey: '<API_KEY>', indexName: '<INDEX_NAME>', inputSelector: '<YOUR_CSS_SELECTOR>', debug: false,
    }
    );
}

);
/* ]]> */

</script>

Возможно, вы захотите взглянуть на https://docs.solace.com/,, они на самом деле используют DocSearch и требуют require.js в целом

...