TypeError:jquery__WEBPACK_IMPORTED_MODULE_0 ___ default(...)(...)。typeahead不是函数

时间:2019-04-25 14:23:03

标签: webpack typeahead.js

我刚通过yarn install的{​​{3}}自由库进行安装。

这是我的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>';
        }
    }
});

这是我的webpack配置的一部分:

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不是   功能

已经尝试过此typeahead.js,但存在相同的问题。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是一个导入问题,您要将其默认导入,但是此lib可能不会将自身导出为默认导出。

一种调查方法是检查package.json中的main字段是什么 然后遵循指定的dist/typeahead.bundle.js文件,并查看其使用的是UMD模块定义,如果您使用的是import/export语法,则您将使用module.exports = factory(require("jquery")); {{3} }。

这意味着您需要使用以下命令导入该库

import * as typehaed from 'typeahead'

您将获得typeahead库的实例。

看起来这个特定的lib在github中有这个问题,这就是解决它的方法。 line