我在项目构建的任何子页面上难以使用RequireJS。基本URL附加到页面URL,因此导致404错误......这是JS:
require.config({
"baseUrl": "content/themes/my-theme",
"paths": {
"jquery": "bower_components/jquery/dist/jquery.min",
"foundation": "bower_components/foundation/js/foundation.min"
},
"shim": {
"foundation": ["jquery"]
}
});
require(['jquery', "foundation"], function($) {
$(document).foundation();
$(document).ready(function() {
console.log('Working!!');
});
});
一般简单......所以当我在我的网站的根域(例如http://my-domain.com/
)上运行它时,一切正常,我得到{{1}的控制台日志如预期的那样。包含的资源(例如jQuery)被调用到正确的URL:
Working!!
问题在于,当我访问内部网页时,http://my-domain.com/content/themes/my-theme/bower_components/jquery/dist/jquery.min.js
会附加到网页网址,因此它会错误地指向,导致文件请求为404. 此处&#39 ; URL的一些例子:
baseURL
正如您所看到的,网页网址扩展程序http://my-domain.com/about-us/content/themes/my-theme/bower_components/jquery/dist/jquery.min.js
http://my-domain.com/category/uncategorized/content/themes/my-theme/bower_components/jquery/dist/jquery.min.js
或/about-us/
是问题所在。
我查看了文档并且必须找不到问题的解决方案。请你指点我正确的方向。
答案 0 :(得分:1)
baseUrl
可以留空,并设置合理的默认值。
您可以将baseUrl
设置为您网站的网址,例如baseUrl : "http://my-domain.com/content/themes/my-theme/"
也许一个有贡献的问题是路径不是以斜杠开头(参见http://requirejs.org/docs/api.html#config-paths)
总之,您可以尝试以下方法:
require.config({
"paths": {
"jquery": "/bower_components/jquery/dist/jquery.min",
"foundation": "/bower_components/foundation/js/foundation.min"
},
"shim": {
"foundation": ["jquery"]
}
});
require(['jquery', "foundation"], function($) {
$(document).foundation();
$(document).ready(function() {
console.log('Working!!');
});
});