我刚通过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,但存在相同的问题。
任何帮助将不胜感激。
答案 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