我试图用RequireJS加载一个名为jCarousel的java插件。我的项目结构如下:用RequireJS + jQuery加载jCarousel
[project root]
assets
app
js
app.js
vendor
jquery-2.1.0.js
jquery.jcarousel-core.js
require.js
我使用the shim config所以我第一次加载RequireJS像这样:
<script data-main="assets/js/app" src="assets/js/vendor/require.js"></script>
然后在app.js,我有RequireJS的这种配置:
requirejs.config({
"baseUrl": "assets/js/vendor",
"paths": {
"app": "../../app"
},
"shim": {
"jquery.jcarousel-core.js": ["jquery-2.1.0"]
}
});
// Load the main app module to start the app
requirejs(["app/main"]);
当我用这个框架加载页面时,所有的脚本似乎都加载了,但是我在浏览器控制台的jcarousel代码中出现错误:
Uncaught ReferenceError: jQuery is not defined
这个错误似乎来自于jQuery的,其中线 - 我不记得的技术名称此过程 - 在“$”符号被映射到“jQuery的”,如:
return Plugin;
};
}(jQuery)); // THIS IS THE OFFENDING LINE
任何指导在这里将不胜感激!
解决方案基于回答
所以这里的问题是因为@MakeeshSapkal所说的那样,在该模块的jCarousel我垫片配置的行不应该包含.js文件。所以配置应该是:
requirejs.config({
"baseUrl": "assets/js/vendor",
"paths": {
"app": "../../app"
},
"shim": {
"jquery.jcarousel-core": ["jquery-2.1.0"]
}
});
此外,似乎'$'没有定义。当我在main.js中执行'$('。container')。hide()'时,我得到一个错误'Undefined TypeError:undefined不是一个函数。 – fraxture