2014-02-16 113 views
0

我试图用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"] 
    } 
}); 
+0

此外,似乎'$'没有定义。当我在main.js中执行'$('。container')。hide()'时,我得到一个错误'Undefined TypeError:undefined不是一个函数。 – fraxture

回答

1

得到垫片配置摆脱.js。 :)

"shim": { 
    "jquery.jcarousel-core": ["jquery-2.1.0"] 
} 

希望这个作品!

+0

这似乎是它。谢谢! – fraxture