Javascript grunt requirejs忽略我的mainConfigFile中的路径 项目简介
我的项目是一个单页店面。该项目有多个模块,每个模块包含一组controller.js、view.js和model.js文件,以及一个template.html文件。并使用requirejs管理依赖关系 问题陈述 我想使用mainConfigFile提供grunt requirejs中参考模块的路径。 mainConfigFile的require.config的一部分存储在单独的文件(base.dependency.config)中,require.config.path在运行时由下划线拼凑在一起 base.dependency.configJavascript grunt requirejs忽略我的mainConfigFile中的路径 项目简介,javascript,requirejs,gruntjs,grunt-contrib-requirejs,Javascript,Requirejs,Gruntjs,Grunt Contrib Requirejs,我的项目是一个单页店面。该项目有多个模块,每个模块包含一组controller.js、view.js和model.js文件,以及一个template.html文件。并使用requirejs管理依赖关系 问题陈述 我想使用mainConfigFile提供grunt requirejs中参考模块的路径。 mainConfigFile的require.config的一部分存储在单独的文件(base.dependency.config)中,require.config.path在运行时由下划线拼凑在一起
config = {
baseDependencyConfig: {
paths: { ... }
shim: { ... }
}
}
main.js
var dependencies = config.baseDependencyConfig;
var basePaths = config.baseDependencyConfig.paths;
var extensionPaths = {
// extra sets of paths
};
// combine base paths and extension paths at runtime using underscore
var dependencyPaths = _.extend(basePaths, extensionPaths);
dependencies.paths = dependencyPaths;
require.config(dependencies);
// application startup
require(['app', 'eventbus']) {
// code
}
错误
然而,grunt requirejs忽略了mainConfigFile,grunt requirejs尝试在根目录下查找“app.js”,而实际上,“app”在require.config路径下定义为
'app': 'modules/base/app/base.app.controller'
我的Grunfile:
我的文件结构
r、 js用于从指定的maincigfile
中提取配置对象。它只在代码中查找某些签名
看
- :确定AST节点是配置调用候选节点
- :调用上述函数以决定如何提取配置
requirejs.config(_VariableToExport = { ... });
这是有限的,Javascript解析器方法使r.js能够提取由函数(比如代码中)创建的配置变得非常复杂。此修补程序尚未提交到项目中。我还在与官僚主义作斗争
我认为目前唯一可行的解决办法是
- 不使用
mainConfigFile
- 将配置导出为NodeJS模块
- 在节点(Grunt)中需要
/main.js
config.js
- 将对象作为值传递给config属性或方法
与r.js 2.1.11相关。如果向baseURL添加正斜杠,如
baseURL:“/public”
,会发生什么?另外,requirejs位于哪里?requirejs
位于public/scripts/lib
文件夹中。而且/public
不起作用,因为老实说,public
不是我执行grunt的根文件夹。Public是应用程序的唯一根文件夹。该项目还有其他组件,例如stylesrc
(用于无css)、单元测试、节点模块等,它们都位于同一个公共级别上。那么,您是否可能没有返回足够远的地方,比如。/../public
?嗨,Dropzilla,谢谢您回答我的问题。我不认为找到公众或需求是问题所在。当require.config.path都直接在main.js中定义时,使用相同的gruntFile和文件结构的确切设置就起作用了。请查看上面帖子的编辑部分。@user2480414,到目前为止您是否已经运行了它?我有一个类似的项目布局(尽管更简单的RequireJS配置实现),我面临着同样的错误:r.js/RequireJS不尊重我的路径配置,试图从baseUrl
加载“jquery.js”,而是配置的相对路径“./libs/jquery-N.NN.js”(带有版本后缀)。。如果不起作用,请告诉我。
public
|--modules/
| |--base/
| | |--cart
| | |--category
| | |--category.controller.js
| | |--category.view.js
| | |--category.model.js
| | └-category.template.html
| |
| └--extension/
|
|--style/
|--image/
|--main.js <-- main config file
|--other .js files
require.config({
paths: {...}
shim: {...}
})
// application startup
require(['app', 'eventbus']) {
// code
}
requirejs.config(_VariableToExport = { ... });