RequireJS 优化器 - Oracle MapViewer 有多个匿名定义
RequireJS optimizer - Oracle MapViewer has more than one anonymous define
我的项目使用 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
。我用谷歌搜索了一下,发现这是 jQuery Hammer 的 issue(包含在 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"
})
我该怎么办?有什么想法吗?
r.js
优化器无法理解包含多个匿名 define
调用的文件。
您必须找到不包含多个匿名 define
调用的 oraclemaps
版本。 (这意味着你必须得到 jQuery 和 Kendo 日期选择器的其他地方而不是 oraclemaps
。)如果这样的构建不可用,你可以处理 oraclemaps
来撕掉额外的模块。或者您可以处理它以便将名称添加到 define
调用。
我的项目使用 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
。我用谷歌搜索了一下,发现这是 jQuery Hammer 的 issue(包含在 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"
})
我该怎么办?有什么想法吗?
r.js
优化器无法理解包含多个匿名 define
调用的文件。
您必须找到不包含多个匿名 define
调用的 oraclemaps
版本。 (这意味着你必须得到 jQuery 和 Kendo 日期选择器的其他地方而不是 oraclemaps
。)如果这样的构建不可用,你可以处理 oraclemaps
来撕掉额外的模块。或者您可以处理它以便将名称添加到 define
调用。