RequireJS的data-main未设置baseUrl

9

我已经为RequireJS设置了data-main,根据文档的说明,这应该为所有脚本文件设置baseUrl。但事实并非如此。 我的文件夹结构如下:

Home/Index.html
Content/scripts/main.js
Content/scripts/libs/require/require.js
Content/scripts/libs/jquery/require_jquery.js
Content/scripts/libs/jquery/jquery-1.7.1.mins.js

这是我在Index.html中的脚本标签:

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

我认为它会将我的baseUrl设置为/PAWS/Content/scripts/,但对我来说并没有起作用。在我的main.js中,我这样做:

require(
    { paths: 
        {   jquery: 'libs/jquery',
            knockout: 'libs/knockout'
        }
    },

    ['jquery/require_jquery'],


    function ($) { .... }
);

在我的require_jquery.js文件中,我这样做:
define(["libs/jquery/jquery-1.7.1.min.js"], function () {
    return jQuery;
});

但我遇到了404错误,显示为:
GET http://localhost/PAWS/Home/libs/jquery/jquery-1.7.1.min.js 404 NOT FOUND

你看,我的baseUrl应该是/PAWS/Content/scripts...但它完全忽略了我的data-main属性设置,并将/PAWS/Home/解析为baseUrl。我做错了什么?
1个回答

10

来自 RequireJS API 文档:

然而,如果依赖项名称具有以下属性之一,则将其视为常规文件路径,就像传递给 <script src=""> 标签的东西:

  • 以 ".js" 结尾。
  • 以 "/" 开头。
  • 包含 URL 协议,如 "http:" 或 "https:"。

由此可见,你在 libs/jquery/jquery-1.7.1.min.js 文件名末尾显式添加的 ".js" 正在困扰着你的 baseUrl 路径。请尝试使用 libs/jquery/jquery-1.7.1.min 替代它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接