“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
中的代码它没有帮助,如果我将它作为资源包含它可行,但是我不想将它作为资源的一部分包含在内。
你能否指出一个错误是什么?
答案 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互相导入。然后我在其中一个中得到了这个错误。