将requirejs与Colorbox一起使用:未捕获的类型错误

Using requirejs with Colorbox: Uncaught TypeError

本文关键字:错误 类型 requirejs Colorbox 一起      更新时间:2023-09-26

所以,在点击一个按钮后,我想显示一个包含YouTube链接的灯箱。

我在项目中使用 requirejs 和灯箱,但出现错误:"Uncatch TypeError: Object function (e,t){return new x.fn.init(e,t,r)} 没有方法 'colorbox'"

我认为该函数找不到 Colorbox,但我不知道为什么。

这是我的文件:openYoutubeLink:

define( [ 'modules/common/preferences' ], function ( preferences ) {
  return function () {
    $.colorbox({width:"900px", height:"600px", iframe:true, href:"youtube.de"});
  };
});

这是我的主要的一部分.js带有require.config:

paths: {
    colorbox : 'libs/jquery/jquery.colorbox-min'
}
shim: {
    'colorbox' : { deps: [ 'jquery' ], exports: 'jquery' }
}

我会让主模块需要jQuery和colorbox插件。我需要它们,以便确保在我的模块执行时它们都被加载。目前,看起来您已经定义了全局$,但这看起来像是偶然而不是设计。

所以修改后它看起来像这样:

define(['modules/common/preferences', 'jquery', 'colorbox'], 
       function (preferences, $) {
  return function () {
    $.colorbox({width:"900px", height:"600px", iframe:true, href:"youtube.de"});
  };
});

另外,我不认为这是您直接问题的根源,但我应该提到这里的exports是错误的:

shim: {
    'colorbox' : { deps: [ 'jquery' ], exports: 'jquery' }
}

您需要一个特定于要填充的模块的符号。例如,我使用 jQuery 的 cookie 插件并像这样填充它:

'

jquery.cookie': { 部门: ["jquery"], 导出:"jQuery.cookie" }

jQuery.cookie是一个符号,当且仅当jquery.cookie文件已正确加载和执行时定义。

(克里格建议不要定义exports。虽然 RequireJS 文档确实说像 jQuery 或 Backbone 这样的插件不需要定义exports,但同样的文档随后提到,如果不使用错误条件exports检测将不起作用。我认为最佳实践是始终定义exports而不是等到最终问题出现。

相关文章: