Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么require.js会忽略配置baseUrl和路径_Url_Path_Requirejs - Fatal编程技术网

为什么require.js会忽略配置baseUrl和路径

为什么require.js会忽略配置baseUrl和路径,url,path,requirejs,Url,Path,Requirejs,我遇到了一个问题,几乎相同的require.js配置调用的工作方式似乎不同,有一种情况是无法设置baseUrl和path 文件夹结构 - /js - - app/ - - libs/ - - - hogan.js - - - backbone - - - - backbone.js - - - - etc. - - - boostrap - - - jquery - - - - jquery.js - - - - etc. - - - require - - - - r

我遇到了一个问题,几乎相同的require.js配置调用的工作方式似乎不同,有一种情况是无法设置
baseUrl
path

文件夹结构

 - /js
 - - app/
 - - libs/
 - - - hogan.js
 - - - backbone
 - - - - backbone.js
 - - - - etc.
 - - - boostrap
 - - - jquery
 - - - - jquery.js
 - - - - etc.
 - - - require
 - - - - require.js
 - - - - etc.
 - - templates/
 - - require.config.js
脚本标记

需要配置

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的完整内容,从以下内容开始:

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

define(
    [
        'backbone',
        'templateEngine'
    ],
// etc
);
但是,如果出现问题,则永远不会加载应用程序/路由器,只加载以下内容(无404,无任何内容):

如果我输入
require([“应用程序/路由器])进入Firebug控制台,我得到以下信息:

"NetworkError: 404 Not Found - /resources/js/backbone.js
"NetworkError: 404 Not Found - /resources/js/templateEngine.js"
当我期望看到的是:

  • /resources/js/libs/backbone/backbone.js
  • /参考资料/js/libs/hogan.js
尝试的解决方案

  • 我尝试对
    baseUrl
    路径使用相对路径和绝对路径的各种组合。例如
    baseUrl:libs
    ,以及
    路径:{“app”:./app“}
    ,等等
  • 我尝试了
    deps
    callback
    而不是在
    config
    下面使用
    require
  • 我已经添加了属性
    context
    ,匹配
    baseUrl
  • 我已经将require.config.js移到了libs目录中(根据需要编辑
    baseUrl
    path
    ;仍然会遇到同样的问题,即忽略配置,例如,它会尝试加载/resources/js/libs/backbone.js)
注意

 - /js
 - - app/
 - - libs/
 - - - hogan.js
 - - - backbone
 - - - - backbone.js
 - - - - etc.
 - - - boostrap
 - - - jquery
 - - - - jquery.js
 - - - - etc.
 - - - require
 - - - - require.js
 - - - - etc.
 - - templates/
 - - require.config.js

这个文件夹结构和配置文件在我的本地主机上工作,我从上面所示的路径中删除/resources/。相反,所有相对路径(无以/)都用于
baseUrl
路径。但在实际的服务器上,这不是一个选项。

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

我也有同样的问题。如果您不想更改文件名,可以通过requirejs config中的路径散列来别名该模块。e、 g.“require.config({paths:{myModule:“/path/to/my.weird.module”}})”我认为您不能将配置文件名命名为别名。如果配置文件本身不受影响,则此操作有效。