Ошибка типа: jquery__WEBPACK_IMPORTED_MODULE_0 ___ default (...) (...). Typeahead не является функцией - PullRequest
0 голосов
/ 25 апреля 2019

Я только что установил через yarn install typeahead.js libreary.

Это мой app.js, вам не нужно читать весь код. Это не имеет значения:

import $ from 'jquery';
import 'typeahead';
const Bloodhound = require('imports-loader?define=>false!typeahead.js/dist/bloodhound.min.js');

$(document).ready(function () {
    var bestPictures = new Bloodhound({
        datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        prefetch: 'http://twitter.github.io/typeahead.js/data/films/post_1960.json',
        remote: {
            url: 'http://twitter.github.io/typeahead.js/data/films/queries/%QUERY.json',
            wildcard: '%QUERY'
        }
    });
$('#custom-templates .typeahead').typeahead(null, {
    name: 'best-pictures',
    display: 'value',
    source: ['a'],
    templates: {
        empty: [
            '<div class="empty-message">',
            'unable to find any Best Picture winners that match the current query',
            '</div>'
        ].join('\n'),
        suggestion: function() {
            return '<div><strong>a</div>';
        }
    }
});

это часть моего конфига веб-пакета:

Encore
    .setOutputPath('web/' + buildFolder + '/')
    .setPublicPath('/' + buildFolder)
    .addEntry('app', './assets/js/app.js')
    .autoProvidejQuery()
    .enableSourceMaps(!Encore.isProduction())
    .enableVersioning(Encore.isProduction())
    .enableSassLoader()
    .enablePostCssLoader()
    .addPlugin(new CopyWebpackPlugin([
        {from: 'assets/img', to: './img'},
    ])).autoProvideVariables({
        $: 'jquery',
        jQuery: 'jquery',
              'window.jQuery': 'jquery'
    })

В целом я получаю эту огромную ошибку:

TypeError: jquery__WEBPACK_IMPORTED_MODULE_0 ___ default (...) (...). typeahead не функция

Уже пробовали это решение , но та же проблема.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 25 апреля 2019

Это проблема импорта, вы импортируете ее по умолчанию, но эта библиотека, вероятно, не экспортирует себя как экспорт по умолчанию.

Один из способов проверить это - проверить, что такое *Затем в поле 1004 * внутри package.json следуйте указанному файлу dist/typeahead.bundle.js и убедитесь, что он использует определение модуля UMD , если вы используете синтаксис import/export, вы будете использоватьmodule.exports = factory(require("jquery")); line .

Это означает, что вам нужно импортировать эту библиотеку, используя

import * as typehaed from 'typeahead'

И вы получите экземпляр typeahead lib.

Похоже, что эта конкретная библиотека имеет эту проблему в github, это то, что ее решает.https://github.com/twitter/typeahead.js/issues/1627#issuecomment-406228429

...