XUL + javascript module : TypeError: xxx.yyyy is not a function

XUL + javascript module : TypeError: xxx.yyyy is not a function

我正在玩 XUL 和模块 (https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Using)

我定义了一个小模块:在hello01/chrome/content/js/hello.jsm

this.EXPORTED_SYMBOLS = ["Hello", "foo"];

function foo() {
  return "foo";
}

var Hello = {
  name : "bar",
  size : 3,
  incr : function()
    {
    this.size++;
    return this.size;
    },
  open : function()
    {
    return this.incr();
    }
};

这个模块是从hello01/chrome/content/main.js

加载的
Components.utils.import("chrome://hello/content/js/hello.jsm");

function jsdump(str) {
  Components.classes['@mozilla.org/consoleservice;1']
            .getService(Components.interfaces.nsIConsoleService)
            .logStringMessage(str);
    }

function showMore() {
  document.getElementById("more-text").hidden = false;
  jsdump("Hello!");
  jsdump(Hello.incr());
  jsdump(Hello.open());
}

来自 xul window:

(...)
<button label="More >>" oncommand="showMore();"/>
(...)

当我点击按钮时,我在 jsconsole 中看到:

Hello !
4
Error: TypeError: Hello.open is not a function
Source File: chrome://hello/content/main.js
Line: 14

为什么 xul 知道 Hello.incr 但不知道 Hello.open ?

更新:代码可在此处获得:https://github.com/lindenb/xul-bootstrap

好的,明白了:XUL-Runner 在 ${HOME}/${VENDOR} 下缓存了一些文件 它默默地忽略了我的更改并使用了缓存中的旧文件。 参见 XULRunner ignores updates on edited files