ERROR:TypeError: $(...).selectpicker 不是使用 requirejs 的函数加载库

Posted

技术标签:

【中文标题】ERROR:TypeError: $(...).selectpicker 不是使用 requirejs 的函数加载库【英文标题】:ERROR:TypeError: $(...).selectpicker is not a function loaded library using requirejs 【发布时间】:2016-06-07 17:19:16 【问题描述】:

ERROR:TypeError: $(...).selectpicker is not a function 首次打开 Web 应用程序时发生错误。

在我的 app.js 中

需要js.config( baseUrl: '', 路径: "jquery": "js/jquery", "jquery-ui": "js/jquery-ui", 文本:“库/文本”, //"css": "css", 车把:'js/车把', 时刻:“js/moment.min”, 引导程序:'js/bootstrap.min', somtjquery: '小部件/somt/js/somtjquery', 引导选择:'js/引导选择', utils: '小部件/somt/js/utils', filterwidget: '小部件/somt/js/filterwidget' , 垫片: 车把: 出口:“车把” , “引导”: 部门:['jquery'] , //'bootstrapdatepicker':deps: ['jquery','bootstrap'], 'somtjquery': 部门:['jquery','utils','bootstrap'] , “引导选择”: 部门:['jquery','bootstrap'] , 'jquery': 出口:'$' , “日期选择器”: deps: ["jquery-ui", "bootstrap"], 出口:“$.fn.datepicker” , “工具提示”: 部门:['jquery'], 出口:'$.fn.tooltip' , '过滤器小部件': deps: ['jquery', "jquery-ui", "bootstrap", "bootstrapselect"], 出口:'filterwidget' ); 在 filterwidget.js 定义([“车把”,'hbs!widgets/somt/templates/pfilter'],功能(车把,过滤器) var selector = "#somt-filter-area"; $(选择器).html(过滤器); $(函数选择日期选择器() 尝试 $(selector).find('.selectpicker').selectpicker(); 抓住 (e) console.log("日期选择错误信息:" + e); 尝试 $(selector).find("#week").datepicker( showOn: "按钮", buttonImage: "图片/通用日历月字形.svg", buttonImageOnly:真, 第一天:1, beforeShowDay:函数(日期) 返回 [date.getDay() === weekofday, ""]; , dayNamesMin: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], maxDate:当前截止日期, 日期格式:'mm/dd/yy' ); 抓住 (e) console.log("日期选择器错误信息:" + e); ); );

特别是我在 Firefox 36 及以下版本中遇到了错误

【问题讨论】:

【参考方案1】:

您误解了如何使用 shim 。 Config 没有正确的 filterwidget 依赖项。使用 'shim' 必须仅用于非 amd 库。如果文件具有define 功能而不是它的amd 模块,并且该模块不需要shim。从shim删除这段代码:

'filterwidget': 
        deps: ['jquery', "jquery-ui", "bootstrap", "bootstrapselect"],
        exports: 'filterwidget'
    

并在 filterwidget.js 中为 filterwidget 设置所有依赖项:

define(['jquery', "jquery-ui", "bootstrap","bootstrapselect","handlebars",'hbs!widgets/somt/templates/pfilter']

ps:同时从 shim 中删除 jquery、jquery-ui。这是 AMD 库。你怎么知道?只看图书馆的开头。例如'jquery-ui'。如果有这样的情况:

if ( typeof define === "function" && define.amd ) 

    // AMD. Register as an anonymous module.
    define([ "jquery" ], factory );
 else 

    // Browser globals
    factory( jQuery );

那么就不需要垫片了。

【讨论】:

以上是关于ERROR:TypeError: $(...).selectpicker 不是使用 requirejs 的函数加载库的主要内容,如果未能解决你的问题,请参考以下文章

ERROR TypeError:“无法在”signUpForm“上分配给属性”validator“:不是对象”

如何修复'ERROR TypeError:Object(...)不是函数'?

Vue ERROR TypeError: Cannot read property 'upgrade' of undefined

Syntax Error: TypeError: Cannot read property ‘parseComponent‘ of undefined (vue报错)

使用 AngularFirestore 和 firebase 的“ERROR TypeError: Object(...) is not a function”

Syntax Error: TypeError: this.getOptions is not a function