关于url:为什么require.js忽略config baseUrl和路径

Why is require.js ignoring config baseUrl and paths

我遇到一个问题,即几乎完全相同的require.js配置调用似乎以不同的方式工作,在一种情况下无法设置baseUrlpath

文件夹结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 - /js
 - - app/
 - - libs/
 - - - hogan.js
 - - - backbone
 - - - - backbone.js
 - - - - etc.
 - - - boostrap
 - - - jquery
 - - - - jquery.js
 - - - - etc.
 - - - require
 - - - - require.js
 - - - - etc.
 - - templates/
 - - require.config.js

脚本标签

<script data-main="/resources/js/require.config" src="/resources/js/libs/require/require.js">

需要配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
require.config(
    {
        baseUrl:"/resources/js/libs",
        shim: {
           "underscore": {
                exports:"_"
            },
           "backbone": {
                deps: [
                   "json2",
                   "underscore",
                   "jquery"
                ],
                exports:"Backbone"
            }
        },
        paths: {
           "app":"/resources/js/app",
           "backbone":"backbone/backbone",
           "jquery":"jquery/jquery",
           "templates":"/resources/js/templates",
           "templateEngine":"hogan"
        }
    }
);

require(
    [
       "app/router"
    ],
    function( AppRouter ){
        AppRouter.execute();
    }
);

在这两种情况下,都将附加一个脚本标记,该脚本标记显示require.config.js的全部内容,以:

开头

<script type="text/javascript" charset="utf-8" data-requirecontext="_" data-requiremodule="require.config" src="/resources/js/require.config.js">

在应用程序/路由器中的定义

1
2
3
4
5
6
7
define(
    [
        'backbone',
        'templateEngine'
    ],
// etc
);

但是,如果出现问题,则永远不会加载应用程序/路由器,仅加载以下内容(无404,什么都没有):

1
2
GET require.js 200 OK 180ms    
GET require.config.js 200 OK 69ms

如果我在Firebug控制台中输入require(["app/router"]);,则会得到以下信息:

1
2
"NetworkError: 404 Not Found - /resources/js/backbone.js
"NetworkError: 404 Not Found - /resources/js/templateEngine.js"

当我希望看到的是:

  • /resources/js/libs/backbone/backbone.js
  • /resources/js/libs/hogan.js

尝试的解决方案

  • 我试图对baseUrlpaths使用相对和绝对路径的各种组合。例如baseUrl: libspaths: {"app" :"../app" }等。
  • 我尝试使用depscallback而不是在config下使用require
  • 我添加了与baseUrl匹配的属性context
  • 我已经将require.config.js移到libs目录中(根据需要编辑baseUrlpaths;仍然遇到相同的忽略配置问题,只是它尝试加载/resources/js/libs/backbone.js,例如)。

注意

此文件夹结构和配置文件确实适用于我的本地主机,在本地主机中,如上所示,从路径中删除了/ resources /。而是将所有相对路径(都不以/开头)用于baseUrlpaths。但是在实际的服务器上这不是一个选择。


解决方案是没有任何解决方案。 (句点)在配置文件的文件名中。将文件重命名为require-config.js后,一切正常。其他文件可以在名称中带有点,但不能在主配置文件中使用。