我用RequireJS 2.2.0我用下面的配置项目:RequireJS优化 - 的Oracle MapViewer有不止一个匿名定义
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的。我使用他们的版本,所以我定义了Kendo和jQuery-UI依赖关系。 oraclemaps有一个组件,按要求顺序需要jquery-ui, colorpicker, eye, layout, and utils
。这也是我在垫片中定义的。该应用程序运行良好。
问题现在与优化器。使用配置,我得到了一个错误oraclemapsv2.js has more than one anonymous define
。我GOOGLE了它,我发现这是一个jQuery Hammer(包含在oraclemaps中)的issue。运行应用程序导致mismatched anonymous define() module
。
我试着把的oraclemaps加载到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"
})
我该怎么办?有任何想法吗?
你能告诉我如何为匿名模块添加名字吗?例如,这是Hammer的部分。 a.Hammer = e,“undefined”!= typeof module && module.exports &&(module.exports = e),“function”== typeof define && define.amd? define([“jquery”],function(b){return d(a.Hammer,b)}):d(a.Hammer,a.jQuery || a.Zepto) – springrolls
您只需要将名称添加为第一个参数。像'define(“Hammer”,[“jquery”],...' – Louis
我尝试加载我自己的jQuery并将noConflict设置为true,但它没有工作。我会再看看虽然,避风港试了足够长的时间 – springrolls