为什么require.js会忽略配置baseUrl和路径
我遇到了一个问题,几乎相同的require.js配置调用的工作方式似乎不同,有一种情况是无法设置为什么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
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”}})”我认为您不能将配置文件名命名为别名。如果配置文件本身不受影响,则此操作有效。