Why is require.js ignoring config baseUrl and paths
我遇到一个问题,即几乎完全相同的require.js配置调用似乎以不同的方式工作,在一种情况下无法设置
文件夹结构
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 |
脚本标签
需要配置
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的全部内容,以:
开头
在应用程序/路由器中的定义
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控制台中输入
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
尝试的解决方案
-
我试图对
baseUrl 和paths 使用相对和绝对路径的各种组合。例如baseUrl: libs 和paths: {"app" :"../app" } 等。 -
我尝试使用
deps 和callback 而不是在config 下使用require 。 -
我添加了与
baseUrl 匹配的属性context 。 -
我已经将require.config.js移到libs目录中(根据需要编辑
baseUrl 和paths ;仍然遇到相同的忽略配置问题,只是它尝试加载/resources/js/libs/backbone.js,例如)。
注意
此文件夹结构和配置文件确实适用于我的本地主机,在本地主机中,如上所示,从路径中删除了/ resources /。而是将所有相对路径(都不以/开头)用于
解决方案是没有任何解决方案。 (句点)在配置文件的文件名中。将文件重命名为require-config.js后,一切正常。其他文件可以在名称中带有点,但不能在主配置文件中使用。