0

我为我的项目使用 RequireJS 2.2.0,配置如下:

require.config({
    baseUrl: "Scripts/js/kendo",
    paths: {
        "kendo.datepicker.min": "kendo.datepicker.min",
        "jquery-ui": "../../lib/jquery-ui.min",
        "modules": "../../modules",
        "colorpicker": "../../lib/colorpicker",
        "eye": "../../lib/eye",
        "layout": "../../lib/layout",
        "utils": "../../lib/utils",
        "oraclemaps": "../../lib/oraclemapsv2"
    },
    shim: {
        "kendo.datepicker.min": ["oraclemaps"],
        "jquery-ui": ["oraclemaps"],
        "colorpicker": ["jquery-ui"],
        "eye": ["colorpicker"],
        "layout": ["eye"],
        "utils": ["layout"]
    }
});

oraclemaps是一个包含 jQuery 的第三方库。我使用他们的版本,所以我在 shim 中定义了 Kendo 和 jQuery-UI 依赖项。oraclemaps 有一个jquery-ui, colorpicker, eye, layout, and utils按上述顺序需要的组件。我也在 shim 中定义了这一点。应用程序运行良好。

现在问题出在优化器上。使用配置,我得到一个错误oraclemapsv2.js has more than one anonymous define。我用谷歌搜索了它,我发现这是一个问题(包含在 oraclemaps 中)。运行应用程序会导致mismatched anonymous define() module.

我尝试将 oraclemaps 放入exclude/excludeShallow并在 HTML 中加载它,但我得到了Script error for "jquery", needed by: jquery-ui, kendo.core.min.

这是我的优化器配置:

({
    baseUrl: "../js/kendo",
    paths: {
        "kendo.datepicker.min": "kendo.datepicker.min",
        "jquery-ui": "../../lib/jquery-ui.min",
        "modules": "../../modules",
        "colorpicker": "../../lib/colorpicker",
        "eye": "../../lib/eye",
        "layout": "../../lib/layout",
        "utils": "../../lib/utils",
        "oraclemaps": "../../lib/oraclemapsv2"
    },
    shim: {
        "kendo.datepicker.min": ["oraclemaps"],
        "jquery-ui": ["oraclemaps"],
        "colorpicker": ["jquery-ui"],            
        "eye": ["colorpicker"],
        "layout": ["eye"],
        "utils": ["layout"]
    },
    include: ["../../lib/require.min"],
    exclude: ["oraclemaps"],
    name: "../../app",
    out: "../build/app-built.js"
})

我应该怎么办?有任何想法吗?

4

1 回答 1

0

优化器无法r.js理解包含多个匿名define调用的文件。

您必须找到一个oraclemaps不包含多个匿名define呼叫的版本。(这意味着您必须获得 jQuery 和 Kendo datepicker 的其他地方oraclemaps。)如果这样的构建不可用,您可以处理oraclemaps删除额外的模块。或者您可以对其进行处理,以便将名称添加到define呼叫中。

于 2016-07-29T10:16:52.387 回答