需要.js丢失 url 上下文

Require.js loosing url context

本文关键字:上下文 url 丢失 js 需要      更新时间:2023-09-26

使用此网址:

"localhost/app2/app.html"

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

我的文件结构是:

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

在应用程序中.html我有一个脚本标签:

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

主.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();
});

我的应用程序.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;
});

因此,当我在浏览器中点击 url 时,我看到首先加载应用程序.html文件,然后加载require.js然后加载main.js .之后,我收到一个 404 尝试从localhost/app/app.js加载应用程序.js - 缺少app2上下文。

我尝试重命名文件,以防 require 变得混乱(不起作用),并且我尝试在列表中上下移动 xx 路径以查看它是否是位置错误(不是)。我尝试使用 xx 的路径以 ./ 开头,但这也不起作用。我已经在预期的路径上导航到该应用程序.js使用浏览器,并且我的 http 服务器很高兴地提供服务。

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

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

baseUrl: './'