我在RequireJS上遇到问题,它只从错误的主机加载一个文件。我在Heroku上运行我的应用程序,但是我将静态文件加载到S3上。当我加载主页时,从S3正确加载RequireJS主文件,但主文件中声明的deps
不是从S3加载而是从Heroku加载。
以下是正确加载RequireJS和主文件的HTML脚本标记。
<head>
<script src="https://mybucket.s3.amazonaws.com/static/webpages/js/libs/require.js" data-main="https://mybucket.s3.amazonaws.com/static/webpages/js/main.js"></script>
</head>
现在这里是main.js
文件:
require.config({
baseUrl: "/static/webpages/js",
paths: {
angular : "libs/angular/angular",
angularAMD : "libs/angular/angular-amd.min",
angularUiRouter : "libs/angular/angular-ui-router.min",
angularLocalStorage: "libs/angular/angular-local-storage.min",
bootstrap: "libs/bootstrap.min",
jquery: "libs/jquery.min",
app : "app"
},
shim : {
'angular' : {'exports' : 'angular'},
'angularUiRouter' : ['angular'],
'angularLocalStorage' : ['angular'],
'bootstrap' : ['jquery']
},
deps: ['app']
});
出于某种原因,RequireJS尝试从Heroku而不是S3加载依赖项app
。 app.js
位于baseUrl
下方。我很想知道这里是否存在一些配置问题。谢谢!
答案 0 :(得分:0)
解决这个问题需要一点点黑客。
1)我从链接RequireJS的data-main
元素中抓取<script>
的值
2)在main.js
文件中,我解析此值并获取主机url值。像http://hostname.com/
3)然后我将此值添加到baseUrl
配置设置中,如下所示:
require.config({
baseUrl: hostURl + "static/webpages/js"
});
现在需要加载我的S3存储桶中的所有文件。