异常错误:chrome://app/content/app1.js - EXPORTED_SYMBOLS不是数组

时间:2012-12-27 15:12:21

标签: xul

“EXPORTED_SYMBOLS不是数组”尝试使用Components.utils.import(“chrome://app/content/app1.js”)时标记为异常;。

我创建了一个XUL应用程序,并从一个JS文件(比如app.js)我试图包含其他JS文件,如上所示。

app.js和app1.js都放在内容文件夹中,并且还添加了以下行的chrome.manifest文件

“内容应用内容/”

在其他JS文件(app1.js)中,我导出了像

这样的符号
var EXPORTED_SYMBOLS = ["Fooinstance"];

var Fooinstance = {
   foo: function() {
   ...
   }
}

在app.js中,

Components.utils.import("chrome://app/content/app1.js"); 
// Error: chrome://app/content/app1.js - EXPORTED_SYMBOLS is not an array 

...
Fooinstance.foo();

我在XULRunner 17.0.1 win32库上运行这个XUL应用程序。

我查看了此链接https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Using

中的代码

它没有帮助,如果我将它作为资源包含它可行,但是我不想将它作为资源的一部分包含在内。

你能否指出一个错误是什么?

2 个答案:

答案 0 :(得分:0)

我有同样的问题,我解决了它: 1)通过.jsm更改文件扩展名(.js) 2)在模块上添加第一行导出要共享的类。 EG:

var EXPORTED_SYMBOLS = ["Xobject"];

function Xobject(){
}
Xobject.prototype.stop = function() {
    return 'stop';
}
Xobject.prototype.run = function() {
    return 'running';
}

3)这样打电话

Components.utils.import('resource://gre/modules/Services.jsm' );
Components.utils.import("chrome://myFirstAddOn/content/Xobject.jsm");

var myXobject = new Xobject();
alert(myXobject.run());

希望对你有所帮助

答案 1 :(得分:0)

对于其他任何人来说,另一个可能的原因是循环依赖。我的情况有点不同,但我有两个JSM文件,每个文件使用Components.utils.import互相导入。然后我在其中一个中得到了这个错误。