Requirejs data-main没有设置baseUrl

Eva*_*sen 9 requirejs

我为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
Run Code Online (Sandbox Code Playgroud)

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

<script data-main="/PAWS/Content/scripts/main.js" src="/PAWS/Content/scripts/libs/require/require.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

我认为它会将我的baseUrl设置为/ PAWS/Content/scripts /但它对我不起作用.在我的main.js中我这样做:

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

    ['jquery/require_jquery'],


    function ($) { .... }
);
Run Code Online (Sandbox Code Playgroud)

在我的require_jquery.js文件中,我这样做:

define(["libs/jquery/jquery-1.7.1.min.js"], function () {
    return jQuery;
});
Run Code Online (Sandbox Code Playgroud)

但我得到404错误说:

GET http://localhost/PAWS/Home/libs/jquery/jquery-1.7.1.min.js 404 NOT FOUND
Run Code Online (Sandbox Code Playgroud)

你看..我的baseUrl应该是/ PAWS/Content/scripts ...但它完全忽略了我的数据主要属性设置,只是将/ PAWS/Home /解析为baseUrl.我究竟做错了什么?

Joh*_*ley 10

来自RequireJS API文档:

但是,如果依赖项名称具有以下属性之一,则将其视为常规文件路径,就像传递给<script src="">标记的内容一样:

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

从这一点来看,你的结尾处的显式".js"似乎libs/jquery/jquery-1.7.1.min.js混淆了你的路径re:baseUrl.试试吧libs/jquery/jquery-1.7.1.min.