Javascript RequireJS定义回调返回错误的模块依赖项

Javascript RequireJS定义回调返回错误的模块依赖项,javascript,requirejs,amd,Javascript,Requirejs,Amd,我对RequireJS有一个非常奇怪和令人沮丧的问题。当我为具有依赖项列表的模块调用require时,回调中可用的所有依赖项都引用单个模块。这可能更容易用代码解释: 包括require.js脚本(不带数据主属性) home_page.js define(['home','searchbar'], function (home,searchbar){ console.log(home.init == searchbar.init); // This is always true !!!

我对RequireJS有一个非常奇怪和令人沮丧的问题。当我为具有依赖项列表的模块调用require时,回调中可用的所有依赖项都引用单个模块。这可能更容易用代码解释:

包括require.js脚本(不带数据主属性)

home_page.js

define(['home','searchbar'], function (home,searchbar){

  console.log(home.init == searchbar.init); // This is always true !!!

  home.init();
  searchbar.init();
});
home.js

define(function(){
  this.init = function(){
    console.log('in home page'); 
  }
  return this;
});
searchbar.js

define(function(){
  this.init = function(){
    console.log('Now in the searchbar init')
  }
  return this;
});
这个问题在home_page.js中,home和searchbar模块都引用了相同的内容。奇怪的是,现在我简化了这个例子,它选择哪一个似乎很随机。大多数时候它是搜索栏,但每隔几次刷新它就会回到家里

有人有主意吗?这是非常明显的吗


编辑:简化示例并提供所有模块源。

您正在两个模块中分配给
。这不是一个好主意(请原谅双关语)
在这两种情况下,此
可能都是
窗口
对象。您可以通过添加

window.init === searchbar.init
测试

重写模块以返回唯一对象,如下所示:

define(function() {
    return {
        init: function() {
            console.log('in home page'); 
        }
    };
});


这是您的完整
requirejs.config
?你能显示搜索栏、主页和帐户模块文件吗?@PaulGrime,问题已经被修改了。不知道为什么,但我认为回调可能有自己的作用域。
define(function(){
  this.init = function(){
    console.log('Now in the searchbar init')
  }
  return this;
});
window.init === searchbar.init
define(function() {
    return {
        init: function() {
            console.log('in home page'); 
        }
    };
});
define(function() {
    return {
        init: function() {
            console.log('Now in the searchbar init'); 
        }
    };
});