javascript - TypeError : $(. ..).typeahead 不是 RequireJS 的函数

标签 javascript jquery twitter-bootstrap-3 requirejs

我正在使用 RequireJS 来加载我的依赖项。

这是我的配置文件:

requirejs.config({
  baseUrl: "/js/dist",
  paths: {
    jquery: "../bower_components/jquery/dist/jquery.min",
    bootstrap: "../bower_components/bootstrap/dist/js/bootstrap.min",
    typeahead: "../bower_components/bootstrap3-typeahead/bootstrap3-typeahead.min",
    validator: "../bower_components/bootstrapvalidator/dist/js/bootstrapValidator.min",
    openlayers: "../vendor/openlayers/OpenLayers"
  },
  shim: {
    bootstrap: {
      deps: ["jquery"]
    },
    validator: {
      deps: ["bootstrap"]
    },
    openlayers: {
      exports: "OpenLayers"
    }
  }
});

还有我的主要应用程序文件的一部分:

define(["jquery", "bootstrap", "openlayers", "./popup", "typeahead"], function($, Bootstrap, OpenLayers, Popup) {
   (...)
   $("#textSearch").typeahead("destroy");
   (...)
});

用 Firebug 检查,我可以看到所有依赖项都已加载。但是在我的搜索文本框中调用 typeahead() 会输出以下消息:"TypeError: $(...).typeahead is not a function"

我无法弄清楚这个错误,因为所有依赖项(预先输入也是如此)都已加载。

你能帮帮我吗? 提前致谢

最佳答案

您使用的是什么版本的 typeahead?

如果是0.11.1:

当前版本的 typeahead(版本 0.11.1)由于模块定义不正确而与 requirejs 不兼容,请参见此处:https://github.com/twitter/typeahead.js/issues/1211

来自 RequireJS docs :

用于模块名称的路径不应包含扩展名,因为路径映射可能用于目录。路径映射代码会在将模块名称映射到路径时自动添加.js扩展名。

库更新之前的一个临时解决方法是更改​​库设置它的 AMD 兼容性的位置。

应该省略文件扩展名,否则 requireJS 会将路径视为绝对路径。

改变:

define("typeahead.js", [ "jquery" ], function(a0) {

到:

define("typeahead", [ "jquery" ], function(a0) {

希望图书馆能尽快更新,与此同时,希望这对您有所帮助。

关于javascript - TypeError : $(. ..).typeahead 不是 RequireJS 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27974846/

相关文章:

javascript - 输入数据到可拖动不起作用

javascript - 从函数返回 jquery 对象

html - bootstrap form-inline 和 form-group 中 <label> 标签周围的空白

javascript - 单击任意位置关闭菜单;如何让它在单击任意位置时停止打开

javascript - 未调用 ES6 angular-meteor ng-table getData 函数

javascript - html/css 交互式日历下一天/前一天按钮编码

javascript - 添加选项到动态生成的选择标签

javascript - ImageJ Javascript 脚本中的文件打开对话框

javascript - 如何使用 Bootstrap 嵌入谷歌地图?

twitter-bootstrap-3 - 包含引导列的标签条