此代码使用requirejs.shimConfig
加载jQuery.mCustomScrollbar插件:
requirejs.config({
baseUrl:'scripts',
paths:{
async:'lib/plugins/async',
domReady:'lib/plugins/domReady',
jquery:"http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min",
"jquery.mCustomScrollbar":"lib/plugins/jquery.mCustomScrollbar.concat.min"
},
shim:{
"jquery.mCustomScrollbar":{
deps:['jquery'],
exports:'jQuery.fn.mCustomScrollbar'
}
}
});
然而,Chrome控制台显示requirejs
尝试从baseUrl
加载文件:
GET http://localhost:8180/GoogleMapErpProject/scripts/jQuery.mCustomScrollbar.js 404 (Not Found) require.js:34
Uncaught Error: Script error for: jQuery.mCustomScrollbar
http://requirejs.org/docs/errors.html#scripterror
我找到了一个令人不满意的解决方案:
requirejs.config({
baseUrl:'scripts',
paths:{
async:'lib/plugins/async',
domReady:'lib/plugins/domReady',
jquery:"http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min",
plugins:"lib/plugins"
},
shim:{
"jquery":{
exports:"jQuery"
},
"plugins/jquery.mCustomScrollbar.concat.min":{
deps:['jquery'],
exports:'jQuery.fn.mCustomScrollbar'
}
}
});
为什么当我在paths
中指定路径并在shimConfig
中使用该路径时,它不起作用?
答案 0 :(得分:0)
来自require.js文档,
baseUrl :用于所有模块查找的根路径。所以在上面 例如,“my / module”的脚本标签将有一个 SRC = “/另一/路径/我/ module.js”。加载时不使用baseUrl 普通的.js文件(由以。开头的依赖字符串表示 斜杠,有一个协议,或以.js结尾),这些字符串按原样使用, 所以a.js和b.js将从与HTML相同的目录中加载 包含上述代码段的页面。
因此路径应该/可以是这样的:
paths:{
async:'lib/plugins/async',
domReady:'lib/plugins/domReady',
jquery:"http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min",
"jquery.mCustomScrollbar":"/lib/plugins/jquery.mCustomScrollbar.concat.min"
},
或
paths:{
...
"jquery.mCustomScrollbar":"./lib/plugins/jquery.mCustomScrollbar.concat.min"
},
或
paths:{
...
"jquery.mCustomScrollbar":"lib/plugins/jquery.mCustomScrollbar.concat.min.js"
},
如果您不希望它从baseUrl加载。