RequireJS从错误的主机加载文件

时间:2016-09-22 22:53:25

标签: javascript heroku amazon-s3 requirejs

我在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加载依赖项appapp.js位于baseUrl下方。我很想知道这里是否存在一些配置问题。谢谢!

1 个答案:

答案 0 :(得分:0)

解决这个问题需要一点点黑客。

1)我从链接RequireJS的data-main元素中抓取<script>的值

2)在main.js文件中,我解析此值并获取主机url值。像http://hostname.com/

这样的东西

3)然后我将此值添加到baseUrl配置设置中,如下所示:

require.config({
    baseUrl: hostURl + "static/webpages/js"
});

现在需要加载我的S3存储桶中的所有文件。