使用 requirejs 和 r.js 优化器时无法加载 jQuery 插件

2024-04-05

我的 requirejs 优化器遇到了一些麻烦。运行优化器后,我在构建/编译文件中收到一些错误消息。在没有优化步骤的情况下运行我的网络应用程序时,我没有任何错误。

这是我的 client.js 文件(包含配置)(coffeescript)

requirejs.config
  baseUrl: '/source/'
  paths:
    text:                 'lib/text'
    io:                   'lib/socket.io'
    underscore:           'lib/underscore'
    backbone:             'lib/backbone'
    jquery:               'lib/jquery'
#    almond:               'lib/almond'
    bootstrap:            'lib/bootstrap'
    bootstrapFileUpload:  'lib/bootstrap-fileupload'
    jqueryUniform:        'lib/jquery.uniform'
    jqueryBrowser:        'lib/jquery.browser'
    datatables:           'lib/jquery.dataTables'
    datatables_bootstrap: 'lib/DT_bootstrap'
  shim:
    io:
      exports: 'io'
    jquery:
      exports: 'jQuery'
    jqueryBrowser:
      deps:    ['jquery']
    jqueryUniform:
      deps:    ['jqueryBrowser', 'jquery']
    underscore:
      exports: '_'
    backbone:
      deps:    ['underscore', 'jquery']
      exports: 'Backbone'
    datatables_bootstrap:
      deps:    ['jquery', 'datatables']
    datatables:
      deps:    ['jquery']


require ['routers/router', 'backbone'], (Router, Backbone) ->
  MainRouter = new Router()
  Backbone.history.start()

这是我的优化器配置。在需要“requirejs”作为模块后,我从nodejs运行优化器。

  config =
    baseUrl: __dirname + '/../client/source'
    name:    'lib/almond'
    include: './client'
    optimize: 'none'
    out:     __dirname + '/../client/' + hash + '.js'
    paths:
      text:                 'lib/text'
      io:                   'lib/socket.io'
      underscore:           'lib/underscore'
      backbone:             'lib/backbone'
      jquery:               'lib/jquery'
      bootstrap:            'lib/bootstrap'
      bootstrapFileUpload:  'lib/bootstrap-fileupload'
      jqueryUniform:        'lib/jquery.uniform'
      jqueryBrowser:        'lib/jquery.browser'
      datatables:           'lib/jquery.dataTables'
      datatables_bootstrap: 'lib/DT_bootstrap'
    shim:
      bootstrap:
        exports: 'bootstrap'
      bootstrapFileUpload:
        exports: 'bootstrapUpload'
      io:
        exports: 'io'
      jquery:
        exports: 'jQuery'
      jqueryBrowser:
        deps:    ['jquery']
      jqueryUniform:
        deps:    ['jqueryBrowser', 'jquery']
      underscore:
        exports: '_'
      backbone:
        deps:    ['underscore', 'jquery']
        exports: 'Backbone'
      datatables:
        deps:    ['jquery']
      datatables_bootstrap:
        deps:    ['jquery', 'datatables']



  requirejs.optimize config, (buildResponse) ->
    js = true
    if js && css
      require './server'
  , (err) ->
    console.log 'requirejs err'
    console.log err

我在 chrome 中看到的具体错误是: “未捕获类型错误:无法读取未定义的属性‘默认值’”

这与此片段相关:

/* Set the defaults for DataTables initialisation */
$.extend( true, $.fn.dataTable.defaults, {

知道可能出了什么问题吗?谢谢!


我遇到了同样的问题。我认为出现这个错误的原因是因为DT_bootstrap.js不是 AMD 模块,但它取决于其副作用。在这种情况下jquery.dataTables.js.

当 RequireJS 优化器将您引用的所有模块合并到一个大 JS 文件中时,原始DT_bootstrap.js是在中间的某个地方,之后的某个地方jquery.dataTables.js。问题是DT_bootstrap.js当您的组合 js 文件加载时立即评估。它想要$.fn.dataTable当遇到以下行时定义:

$.extend( true, $.fn.dataTable.defaults, {

Since jquery.dataTables.js是一个 AMD 模块,它已被编译但尚未评估。只有在后面的代码中需要它作为依赖项时才会对其进行求值,并且只有那时它才会定义$.fn.dataTable.

我通过将“DT_bootstrap.js”包装在 AMD 模块定义中来解决这个问题,如下所示:https://github.com/amdjs/backbone/blob/master/backbone.js#L8-L24 https://github.com/amdjs/backbone/blob/master/backbone.js#L8-L24

例如:

(function(root, factory) {
  // Set up DT_bootstrap appropriately for the environment.
  if (typeof define === 'function' && define.amd) {
    // AMD
    define(['jquery', 'datatables', 'bootstrap'], function($) {
      factory($);
    });
  } else {
    // Browser globals
    factory(root.jQuery);
  }
}(this, function($) {
    // <--- original DT_bootstrap.js goes here 
}));

它为我解决了这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 requirejs 和 r.js 优化器时无法加载 jQuery 插件 的相关文章

  • 使用 WMI 查找服务的依赖关系,然后区分依赖的服务和依赖的驱动程序

    MSDN 上有一个代码示例 它使用 WMI 枚举特定服务的所有依赖项 http msdn microsoft com en us library aa393673 v vs 85 aspx http msdn microsoft com e
  • 如何修复 Nuxt 中导航器/窗口/文档未定义的问题

    我试图确定 Nuxt 应用程序内的 UserAgent 和 Retina 信息 但应用程序抛出错误并显示导航 窗口未定义 我如何在 nuxt 应用程序中获取这些信息 const userAgent navigator userAgent t
  • JavaScript 对象引用缓存

    我们的代码库中有很多对象 它们的名称空间是为了避免冲突 Example App local view MyView 在我在代码库中看到的大多数地方 我们使用完整路径来获取对对象的引用 并且这在同一函数中重复多次 Example functi
  • 将 Javascript 变量转换为 PHP 变量

    我想使用由 videoel getCurrentTime 函数返回给我的 javascript 变量 并将其转换为 php 变量 以便我能够将其添加到我的 SQL 插入查询中 例如 INSERT INTO tblData VALUES ph
  • 如何使用 axios / jest 测试失败的请求

    我创建了一个非常小的应用程序 如果您传递硬币和数量 它可以计算为某些加密货币支付的总价格 我想测试错误 但我总是收到 收到的承诺已解决而不是被拒绝 我相信这是因为如果 url 错误 axios 仍然会解决承诺 我遇到的第二个问题是 我尝试测
  • 如何从表中选择所有偶数 id?

    我想从 MySQL 数据库的表中选择所有甚至帖子 ID 然后显示它们 我还想获取所有带有奇怪 id 的帖子并将它们显示在其他地方 我想使用 PHP 来完成此操作 因为这是我使用的服务器端语言 或者 我是否必须选择所有帖子 然后使用 Java
  • 在 asp.net vb 中通过第一个下拉列表值填充第二个下拉列表

    我在使用 asp net vb 时遇到了一些问题 我想做的是有2个下拉框 第一个下拉菜单将有 1 2 3 例如 第二个下拉菜单将有 A 乙 C 默认情况下 但是 如果选择 1 我希望第二个下拉菜单自动选择 c 我不知道 JavaScript
  • jQuery 的 css() 在应用于滚动事件时滞后

    我正在尝试实现一个简单的 固定标题 表 我知道这在理论上只能用 CSS 来完成 但是当涉及到 OSX Lion 及其消失的滚动条时 它效果不佳 所以我用 jQuery 来做 方法很简单 只有1 5行代码 inbox scroll funct
  • ngModel.$parsers 忽略 ng-model 值末尾的空格

    我有这样的指令 directive noWhitespace parse function parse return restrict A require ngModel link function scope element attrs
  • 从未定义解构时避免错误

    可以说我有这个代码 const x y point Babel 会将其变成 var point point x point x y point y 这很好 但是如果点未定义怎么办 现在我得到一个错误 Cannot read property
  • 在 JavaScript 中比较表单中的两个数字

    当我尝试比较不同的数字时 数字发生变化 但文本部分保持不变 这只发生在较大 较小的情况下 而不会发生在 NaN 或相等的情况下 这是我的代码 function check var a document getElementById a va
  • 使用 jQuery 仅从字符串末尾修剪空格

    我知道 jQuery trim 函数 但我需要的是一种仅从字符串末尾修剪空格的方法 而不是开头 So str this is a string 会成为 str this is a string 有什么建议么 Thanks 您可以使用正则表达
  • 光滑的轮播缓动示例

    我正在使用 Slick Carousel http kenwheeler github io slick http kenwheeler github io slick 但不知道如何合并不同的幻灯片切换 有人有例子可以分享吗 这是我目前拥有
  • Web SQL 数据库 + Javascript 循环

    我正在尝试解决这个问题 但我自己似乎无法解决 我正在使用 Web SQL DB 但无法让循环正常使用它 I use for var i 0 i lt numberofArticles 1 i db transaction function
  • 使用 onBlur 事件上的值更新 React 输入文本字段

    我有以下输入字段 在模糊时 该函数调用服务来更新服务器的输入值 完成后 它会更新输入字段 我怎样才能让它发挥作用 我可以理解为什么它不允许我更改字段 但我能做些什么才能使其工作 我无法使用defaultValue因为我会将这些字段更改为其他
  • Postman - 如何计算 JSON 响应中特定对象的出现次数

    我是 JSON 和 Postman 的新手 我相信我正在尝试做一些非常简单的事情 我创建了一个 GET 请求 它将获得如下所示的 JSON 响应 在下面的例子中我想得到count响应中所有 IsArchived 属性 这些属性的数量因响应而
  • RTCDataChannel发送方法不发送数据

    我的 RTCDataChannel 遇到一个奇怪的问题 我正在对 WebRTC 进行一些研究 并且已经可以进行 WebRTC 音频 视频聊天 现在我想使用 RTCDataChannel 添加文本聊天和文件共享 我已经像这样创建了 RTCDa
  • 如何在粘贴时获取文本区域输入字段的新值?

    我发现当我尝试从文本区域字段读取值时onpaste调用函数时 我得到字段的旧值 粘贴操作之前的值 而不是新值 粘贴操作之后的值 以下是此行为的演示 http jsfiddle net qsDnr http jsfiddle net qsDn
  • ThreeJS无法加载Json文件

    首先 我已经读过这个问题 https stackoverflow com questions 17201888 three js exporter export object not working with jsonloader r58没
  • FullCalendar 检查选择日是否有活动?

    我正在使用 Full Calendar js 插件 到目前为止一切顺利 但我想检查开始和结束之间的选择是否有事件 我只需要返回 true 或 false 基本上 如果日期选择中已经存在事件 我想阻止用户创建事件 var calendar c

随机推荐

  • C++ 中“\n”和“\n”有什么区别?

    我已经看到新线了 n在我看过的一些代码示例中使用了两种不同的方式 第一个是 n 第二个是 n 有什么区别以及为什么要使用 n 我明白了 n 代表一个 char 和 n 代表一个字符串 但这有关系吗 n 是一个字符常数 n 是一个指向字符数组
  • 为什么元素的属性出现在内联函数的范围内?

    鉴于此代码
  • 记录多线程应用程序中的活动

    我有一个 Java 分层应用程序 它有一个从不同点调用的多线程数据访问层 对该层的一次调用可能会产生多个线程来并行化对数据库的请求 我正在寻找的是一个日志记录工具 它允许我定义由各种线程组成的 活动 因此 数据访问层中的相同方法应根据其调用
  • Rails 3 中全局变量的放置位置

    我曾经将全局变量放入我的 Rails 2 3 8 应用程序的environment rb中 例如 MAX ALLOWD ITEMS 6 它似乎在 Rails 3 中不起作用 我尝试将其放入 application rb 中 但这没有帮助 你
  • Angular 2/4:如何在动态创建的组件上添加表单控件?

    我正在尝试使用 ComponentFactoryResolver 创建反应式表单 我想要以该形式添加的所有组件都是特定的 并实现 ControlValueAccessor 接口 所以 我的问题很简单 如何在使用 ComponentFacto
  • 检查关联数组是否包含值

    Array 0 gt Array questionID gt 47 surveyID gt 51 userID gt 31 question Title gt Choose Any One question Type gt Dropdown
  • 使用 Python 进行视频流传输

    Python 中是否有任何库 或 应用程序可支持视频流 它必须读取文件并需要通过网络进行流式传输 查看波动 http flumotion net 它是一个用Python实现的流媒体服务器
  • Xdebug 未加载

    Windows 7 64 位 PHP 5 3 10 php xdebug 2 1 4 5 3 vc9 x86 64 我通过粘贴 phpinfo 的输出获得了正确的下载here http xdebug org wizard php 这就是我的
  • RabbitMQ 启动失败

    RabbitMQ Windows 服务将无法启动 C Program Files x86 RabbitMQ Server rabbitmq server 3 0 4 sbin gt rabbitmq service bat start C
  • OpenAI API 错误 500:“服务器在处理您的请求时出错”、503:“服务不可用”或 504:“网关超时”

    我创建了一个 Python 脚本 该脚本循环遍历文本字符串列表 每个字符串的长度约为 2000 个字符 并总结每个字符串 请参阅下面的响应代码 此提示位于 for 循环内 response openai Completion create
  • 如何右键单击列表框中的项目并在 WPF 上打开菜单

    我有一个包含文件的列表框 我希望能够右键单击并打开 删除 之类的菜单 以便从列表框中删除文件 目前我在右键单击列表框中的项目后具有此功能 private void listBoxFiles PreviewMouseRightButtonDo
  • 先进先出 (FIFO) 库存成本核算

    这是一篇有趣的文章 我发现它对我的项目很有用 基于集合的 Speed Phreakery 先进先出库存 SQL 问题 http www simple talk com sql performance set based speed phre
  • React Router + Axios 拦截器。如何进行重定向?

    我有一个 axios 拦截器 当用户被强制注销 由于令牌过期 时 我想返回我的主页 我不确定如何将反应路由器传递给它 我正在使用 mobx 但不确定这是否能帮助我解决这个问题 export const axiosInstance axios
  • plupload跨域上传200 http错误

    我想使用 plupload 库将文件上传到远程服务器 使用 html5 运行时的 Chrome 32 0 和 IE 10 一切正常 但当我尝试使用 Firefox 27 html5 运行时 或 IE 8 html4 运行时 时 出现错误Er
  • Mozilla 扩展的内容安全策略

    我在 Mozilla 和 Chrome 中都有一个扩展 在我的扩展中我调用了一个远程 JS 文件 为了避免 Chrome 中的 CSP 我将规则添加到 manifest json 中 并且我的文件通过 HTTPS 传输 因此一切都很完美 但
  • 流星中的页面转换?

    我有一个流星移动应用程序结构上在职的 我确实需要将视图与一些页面转换缝合在一起 我看了看铁过渡剂 https github com tmeasday iron transitioner项目但看起来开发已经停止了 最后一次提交是在 6 个月前
  • 连接 MYSQL 表并按两个字段排序?

    我在 MYSQL 中对表进行排序时遇到问题 我的桌子设置如下 订单详细信息 Order ID 运输费 printed 产品详情 ID Order ID SKU 位置 我想选择打印 FALSE 的所有订单 但还要按运费排序 然后按 SKU l
  • 在 Android 中,即使屏幕进入睡眠模式后仍会继续振动

    在我的应用程序中 我通过以下代码启动 VIBRATOR SERVICE long pattern 50 100 1000 Vibrator vibe Vibrator context getSystemService Context VIB
  • KVC setNilValueForKey:建议调用方法而不使用属性访问器

    The KVC文档 http developer apple com library mac documentation Cocoa Conceptual KeyValueCoding Articles AccessorConvention
  • 使用 requirejs 和 r.js 优化器时无法加载 jQuery 插件

    我的 requirejs 优化器遇到了一些麻烦 运行优化器后 我在构建 编译文件中收到一些错误消息 在没有优化步骤的情况下运行我的网络应用程序时 我没有任何错误 这是我的 client js 文件 包含配置 coffeescript req