Javascript RequireJS向模块传递配置时始终返回未定义的
例如,我在其他SO帖子中尝试过该解决方案,但似乎不起作用。结果我总是没有定义 我的配置在我的HTML中Javascript RequireJS向模块传递配置时始终返回未定义的,javascript,jquery,requirejs,Javascript,Jquery,Requirejs,例如,我在其他SO帖子中尝试过该解决方案,但似乎不起作用。结果我总是没有定义 我的配置在我的HTML中 <script type="text/javascript"> var require = { config: { 'config': { --> if I change this to app, I could read the value in app.js userId: 1
<script type="text/javascript">
var require = {
config: {
'config': { --> if I change this to app, I could read the value in app.js
userId: 1
}
}
};
</script>
<script src="lib/require.min.js" data-main="app"></script>
我在应用程序中使用配置模块
require(['modules/config', 'modules/A'], function (config, a)
{
var userId = config.userId; --> undefined
var userName = config.userName; --> Test
});
有什么想法吗?我错过什么了吗?我使用JQuery 1.12.3和RequireJS 2.2.0。我遵循以下技术使其工作。HTML中包含的文件。它们可以在
config
路径中定义
目录结构:
-index.html
-modules
- myModule.js
-app.js
HTML(index.HTML)
最后是我的app.js
define("modules/myModule",function ()
{
return function(){
return requireVar.config.userId;
}
});
require(['modules/myModule'], function (myModule)
{
alert("");
var userId = myModule();
console.log(userId);
});
解决方案
编辑传递给RequireJS的配置:
var require = {
config: {
'modules/config': {
userId: 1
}
}
};
解释
您的模块ID不匹配。当您需要模块时,可以使用require(['modules/config',…
。因此模块名称为modules/config
。但是,在您的RequireJS配置中,您为名为config
的模块提供了一个配置。因此,当您使用module.config()时
在modules/config
中,RequireJS在配置中搜索名为modules/config
的模块,但未找到该模块。因此您未定义。执行我前面提到的修复程序将允许RequireJS查找配置
或者,您可以使用路径
以配置
的名称加载模块:
var require = {
paths: {
config: 'modules/config'
},
config: {
config: {
userId: 1
}
}
};
使用
require(['config',…
哇,谢谢!我是新来的RequireJS,正在尝试掌握它的窍门。很乐意帮忙。顺便说一句,我并不是那个否决你的问题的人。(只是说,因为时间可能会让它看起来像我一样。)我实际上已经投票了,因为它很容易被RequireJS中的模块ID绊倒。
var require = {
config: {
'modules/config': {
userId: 1
}
}
};
var require = {
paths: {
config: 'modules/config'
},
config: {
config: {
userId: 1
}
}
};