【问题标题】:Trouble with RequireJS optimizer config, bbb releaseRequireJS 优化器配置问题,bbb 发布
【发布时间】:2013-09-24 15:54:33
【问题描述】:

我正在使用 RequireJS、带有布局管理器的主干样板、JamJS 来帮助管理包,并且在开发中一切正常,但是当我尝试使用连接文件创建生产版本时它不起作用。

看起来我的配置中的shim 可能没有被加载。例如,我在控制台中收到的错误是Uncaught TypeError: Cannot set property 'cookie' of undefined,因此 jQuery 没有作为 jquery.cookie 的依赖项加载。这是我的应用配置:

// Set the require.js configuration for your application.
require.config({

  // Initialize the application with the main application file and the JamJS
  // generated configuration file.
  deps: ["../vendor/jam/require.config", "main"],

  paths: {
    baseUrl : '/',
    config : "config",

    // JavaScript folders.
    api : "libs/api",
    app : "app",

    // Libraries.
    almond : "../vendor/jam/js/libs/almond",
    engagement : "libs/engagement",
    environment : "libs/environment",
    jquery : "../vendor/jam/jquery/jquery",
    jqueryui : "../vendor/js/libs/jquery-ui-1.9.1.custom.min",

    "jquery-cookie" : "../vendor/jam/jquery-cookie/jquery.cookie",

    chosen : "../vendor/js/libs/jquery.chosen.min",
    colorpicker : "../vendor/js/libs/jquery.colorpicker",
    bootstrap : "../vendor/js/libs/bootstrap",
    jqueryuiwidget : "../vendor/js/libs/jquery.ui.widget",

    jstemplates : "../vendor/js/libs/tmpl",
    jsloadimage : "../vendor/js/libs/load-image",
    jscanvastoblob : "../vendor/js/libs/canvas-to-blob",
    iframetransport : "../vendor/js/libs/jquery.iframe-transport",
    fileupload : "../vendor/js/libs/jquery.fileupload",
    fileuploadfp : "../vendor/js/libs/jquery.fileupload-fp",
    fileuploadui : "../vendor/js/libs/jquery.fileupload-ui",
    fileuploadlib : "libs/fileupload",

    highchartsgraytheme : "../vendor/js/libs/gray",
    highchartsexporter : "../vendor/js/libs/exporting",

    adpin : "libs/adpin",

    val : "../vendor/js/libs/jquery.validate.min",
    valmethods : "../vendor/js/libs/additional-methods.min",

    advertiser : "libs/advertiser",
    messages : "libs/messages",

    user : "libs/user",
    zeroclipboard : "../vendor/js/libs/zero-clipboard",

    jqgrid : "../vendor/js/libs/jquery.jqGrid.min",
    jqgridsource : "../vendor/js/libs/grid.locale-en",

    reporting : "libs/reporting",
    adlift : "libs/adlift",
    utilities : "libs/utilities",
    qrcode : "../vendor/js/libs/jquery.qrcode.min",
    base64 : "../vendor/js/libs/base64",

    kinetic : "../vendor/js/libs/kinetic.min",
    canvaslib : "libs/canvas",

    socialstream : "libs/socialstream",
    analytics : "libs/analytics",

    classie : "../vendor/js/libs/classie",

    classie_modernizr : "../vendor/js/libs/modernizr.custom",

    qtip2 : "../vendor/js/libs/jquery.qtip",

    sponsored : 'libs/sponsoredcontent',

    publisher : 'libs/publisher',

    xml : '../vendor/jam/codemirror3/mode/xml/xml'
  },

  shim: {

    "jquery-cookie" : {
        deps : ["jquery"]
    },

    "api" : {
        deps : ["environment"]
    },

    "xml" : {
        deps : ["codemirror3"]
    },

    "classie" : {
        deps : ["classie_modernizr"]
    },

    "jqueryui" : {
        deps : ["jquery"]
    },

    "colorpicker":{
        deps : ["jquery"]
    },

    "jqueryuiwidget" : {
        deps : ["jquery"]
    },

    "jstemplates" : {
        deps : ["jquery"]
    },

    "jsloadimage" : {
        deps : ["jquery"]
    },

    "jscanvastoblob" : {
        deps : ["jquery"]
    },

    "fileupload" : {
        deps : ["jquery", "jqueryuiwidget"]
    },

    "fileuploadfp" : {
        deps : ["jquery", "jscanvastoblob", "fileupload"]
    },

    "fileuploadui" : {
        deps : ["jquery", "jstemplates", "jsloadimage", "fileuploadfp", "fileuploadlib"]
    },

    "qrcode" : {
        deps : ["jquery"]
    },

    "base64" : {
        deps : ["jquery"]
    },

    "highchartsgraytheme" : {
        deps : ["highcharts"]
    },

    "highchartsexporter" : {
        deps : ["highcharts"]
    },

    "utilities" : {
        deps : ["lodash", "jquery", "val"]
    },

    "val" : {
        deps : ["jquery"]
    },

    "valmethods" : { 
        deps: ["jquery", "val"]
    },

    "zeroclipboard": {
        deps : ["jquery"]
    },

    "jqgrid" : {
        deps : ["jquery", "jqgridsource"]
    },

    "jqgridsource" : {
        deps : ["jquery"]
    },

    "bootstrap" : {
        deps : ["jquery"]
    }
  }

});

这是我加载 require.js 文件的方式:

<script data-main="/app/config" src="/dist/debug/require.js"></script>

对可能发生的事情有任何想法吗?当我使用bbb release 时,创建调试文件时,一切都会顺利完成。

【问题讨论】:

  • 我并没有深入研究,但乍一看,“jquery-cookie”是唯一一个名称周围有引号的库。也许这是一个简单的解决方法??
  • @juliep 不,那不是问题。引号仅保留该对象属性。为了以防万一,我将其更改为与其他相同,仍然是相同的问题
  • 您是否尝试将 shim 添加到 jquery?
  • @Blacksonic 你是什么意思?
  • "jquery" : { 出口 : "$" },

标签: javascript jquery requirejs backbone-boilerplate backbone-layout-manager


【解决方案1】:

我有一些建议,这听起来可能很愚蠢,但由于我没有掌握文件猜测是我能做的最好的,所以,确保你的 jquery-cookie 中没有:define(["jquery"], .....文件,因为您应该将它包含在 shim 中或使用此定义,但不能同时包含这两者,因为它可能会导致冲突。 如果它有效,请告诉我添加解释为什么会发生这种情况,祝你好运。

【讨论】:

  • 这基本上是问题所在。与定义 jquery 和我导出的 jquery 发生冲突
【解决方案2】:

埃文,我不确定你的问题到底是什么。为此,我建议从 JamJS 转而使用 Bower。谁知道呢,也许 Jam 中的构建被破坏了。

您的 shim 看起来正确,但我想知道您是否在 Gruntfile.js 文件的 requirejs 部分下设置了 mainConfigFile 选项。

bbb 命令已被弃用,因此我鼓励您调查https://github.com/backbone-boilerplate/backbone-boilerplate/wiki/Installation 我们的生成器应该可以很好地满足您的需求!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 2010-11-16
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多