Require.js丢失了url上下文

时间:2013-09-10 17:04:43

标签: javascript requirejs

使用此网址:

"localhost/app2/app.html"

我希望require.js操纵路径,以便它加载的所有脚本都以上下文'app2 /'作为前缀。但是,我的应用程序脚本获得了404,当我查看firebug时,浏览器正在尝试在没有app2上下文的情况下检索它。

我的文件结构是:

content
  |-app.html
  |-main.js
  |-app
    |-app.js
    |-main.js
  |-libs
    |-require.js

在app.html中,我有一个脚本标记:

<script src="libs/require.js" data-main="app/main" type="text/javascript"></script>

main.js文件包含:

require.config({
    baseUrl: "/",
    paths: {
        xx: "app/app",
        header: "app/views/header",
        footer: "app/views/footer",
        templates: "app/views/templates",
        jquery: "libs/jquery-2.0.3",
        k: "libs/kendo/kendo.core",
        backbone: "libs/backbone",
        marionette: "libs/backbone.marionette",
        wreqr: "libs/backbone.wreqr",
        babysitter: "libs/backbone.babysitter",
        underscore: "libs/underscore",
        text: "libs/text"
    },
    shim: {
        jquery: {
            exports: '$'
        },
        underscore: {
            exports: '_'
        },
        backbone: {
            deps: ['jquery', 'underscore'],
            exports: 'Backbone'
        },
        marionette: {
            deps: ['jquery', 'underscore', 'backbone'],
            exports: 'Marionette'
        }
    }
});

require(["xx"], function (app) {
    app.start();
});

我的app.js看起来像这样:

define(['jquery', 'underscore', 'backbone', 'marionette'],
function ($, _, Backbone, Marionette) {
    var app = new Backbone.Marionette.Application();

    app.addRegions({
        headerRegion: "#header-region",
        moduleRegion: "#module-region",
        footerRegion: "#footer-region",
        dialogsRegion: "#dialogs-region"
    });

    app.on("initialize:after", function() {
        console.log("Starting App");
        Backbone.history.start();
    });

    return  app;
});

因此,当我点击浏览器中的网址时,我看到首先加载了app.html文件,然后加载require.js,然后加载main.js。之后,我收到404尝试从localhost/app/app.js加载app.js - app2上下文丢失。

我已经尝试重命名文件,以防需要混淆(不起作用),并且我已经尝试在列表中上下移动xx路径以查看它是否是位置错误(它不是)。我尝试使用从./开始的xx路径,但这也不起作用。我已经使用浏览器导航到app.js,在预期的路径上,我的http服务器很乐意为它服务。

起初我认为这是一个路径问题,所以我在stackoverflow上阅读这里的解决方案,但这不是一个简单的路径问题,因为它是缺少的上下文 - 根URL - 而不是路径。 AHGA。

1 个答案:

答案 0 :(得分:1)

好的,我有答案。我已将baseUrl设置为绝对URL,而不是相对URL。正确的字符串是:

baseUrl: './'