Requirejs 在require.js中定义全局变量时遇到问题

Requirejs 在require.js中定义全局变量时遇到问题,requirejs,Requirejs,我试图定义一个全局对象,我可以在所有模块中引用它。但是,在模块中,我无法引用我的路径,它表示“g”不存在 在main1.js中,我有: requirejs.config({ paths: { Underscore: 'lib/underscore/1.3.3/underscore.min', Backbone: 'lib/backbone/0.9.2/backbone.min', Globals: 'lib/backbone/ globalVars' } });

我试图定义一个全局对象,我可以在所有模块中引用它。但是,在模块中,我无法引用我的路径,它表示“g”不存在

在main1.js中,我有:

requirejs.config({
  paths: {
    Underscore: 'lib/underscore/1.3.3/underscore.min',
    Backbone: 'lib/backbone/0.9.2/backbone.min',
    Globals: 'lib/backbone/ globalVars'
  }
});

require([ 'views/pages', 'views/filters'], function(allPages, filters) {
  filters.render();
  allPages.render();
});
(function() {
    var Globals = {
        isDemo: false
    }
    console.log('in globalvars') // this shows in my console
}).call(this);
define([
  'Globals',
  'Underscore',
  'Backbone'
], function(g, _, Backbone){
console.log(g.isDemo)  //<-- returns "TypeError: g is undefined"
在globalVars.js中,我有:

requirejs.config({
  paths: {
    Underscore: 'lib/underscore/1.3.3/underscore.min',
    Backbone: 'lib/backbone/0.9.2/backbone.min',
    Globals: 'lib/backbone/ globalVars'
  }
});

require([ 'views/pages', 'views/filters'], function(allPages, filters) {
  filters.render();
  allPages.render();
});
(function() {
    var Globals = {
        isDemo: false
    }
    console.log('in globalvars') // this shows in my console
}).call(this);
define([
  'Globals',
  'Underscore',
  'Backbone'
], function(g, _, Backbone){
console.log(g.isDemo)  //<-- returns "TypeError: g is undefined"
最后,在view/pages.js中,我有以下内容:

requirejs.config({
  paths: {
    Underscore: 'lib/underscore/1.3.3/underscore.min',
    Backbone: 'lib/backbone/0.9.2/backbone.min',
    Globals: 'lib/backbone/ globalVars'
  }
});

require([ 'views/pages', 'views/filters'], function(allPages, filters) {
  filters.render();
  allPages.render();
});
(function() {
    var Globals = {
        isDemo: false
    }
    console.log('in globalvars') // this shows in my console
}).call(this);
define([
  'Globals',
  'Underscore',
  'Backbone'
], function(g, _, Backbone){
console.log(g.isDemo)  //<-- returns "TypeError: g is undefined"

它很好用。我一直没能弄清楚为什么这不起作用。我希望能够只包含到globalVars的路径,而不是在每个需要它的模块中粘贴define块的样板文件,因为将isDemo更改为false还需要更新许多其他模块页面(main2.js、main3.js等)。谢谢

首先,您的
globalVars.js
不在模块模式中,因此requirejs不知道您试图注册为模块的内容。如果您更改该文件以使用该模式,如添加到main1.js中的define,您应该已经全部设置好了。您不将其定义为模块有什么原因吗?

您看到了吗?:谢谢Waxen,就是这样!我还使用了主干线和下划线,所以我觉得我必须以类似的方式定义它。我用从main1.js中取出的define块替换了Globals.js的内容,现在它开始工作了!好东西!