Javascript 我如何要求Firefox扩展(插件)中的文件?

Javascript 我如何要求Firefox扩展(插件)中的文件?,javascript,firefox-addon,Javascript,Firefox Addon,我们为Chrome、Firefox和Safari创建了扩展。我们的Firefox扩展有一个跟踪器tracker.js,这是控制器要求的: tracker = require("../../firefox/tracker.js").tracker; 跟踪器可以处理其他文件,例如: if (typeof exports !== 'undefined') { common = require("../content/src/common.js").common; utils = re

我们为Chrome、Firefox和Safari创建了扩展。我们的Firefox扩展有一个跟踪器tracker.js,这是控制器要求的:

tracker = require("../../firefox/tracker.js").tracker;
跟踪器可以处理其他文件,例如:

if (typeof exports !== 'undefined') {
    common = require("../content/src/common.js").common;
    utils = require("../content/src/utils.js").utils;
}

var tracker = new function() {
    this.ws_track = function(params) {
        params["from_extension"] = true;
        params["platform"] = common.sys.platform;
        params["version"] = utils.get_version();
        if (params["e"] === "install") {
            utils.send_get_request(common.config.urls.apis.wstrack, params, function(data) {}, 'json');
        }
    };
};

if (typeof exports !== 'undefined') {
    exports.tracker = tracker;
}
但是,当我试图从跟踪器获取控制器文件时,我收到以下错误:

JPM [error]   Message: TypeError: tracker is undefined
以下是本例中的跟踪器代码:

if (typeof exports !== 'undefined') {
    common = require("../content/src/common.js").common;
    controller = require("../content/src/controller.js").controller;
    utils = require("../content/src/utils.js").utils;
}

var tracker = new function() {
    this.ws_track = function(params) {
        params["from_extension"] = true;
        params["platform"] = common.sys.platform;
        params["version"] = utils.get_version();
        var uid = controller.load_param("uid");
        if (uid) {
            params["uid"] = uid;
        }
        if (params["e"] === "install") {
            utils.send_get_request(common.config.urls.apis.wstrack, params, function(data) {}, 'json');
        }
    };
};

if (typeof exports !== 'undefined') {
    exports.tracker = tracker;
}
但是如果我不需要控制器,我会收到一个未定义的错误。如何从跟踪器文件中获取控制器?我无法合并这些文件,因为Chrome、Firefox和Safari的控制器文件是相同的。而追踪器则不同(Mozilla没有批准我们的Chrome追踪器)


更新:我将控制器代码移动到控制器,并始终从控制器调用跟踪器,它解决了这个问题(跟踪器不使用控制器)。但是如果您找到了这个问题的解决方案,请告诉我。

有一个SDK require函数,我这样使用它-

它似乎在CommonJS模块上起作用。请查看-

worker中还有一个
require
功能,可以这样使用:

importScripts('resource://gre/modules/workers/require.js');

有一个SDK require函数,我这样使用它-

它似乎在CommonJS模块上起作用。请查看-

worker中还有一个
require
功能,可以这样使用:

importScripts('resource://gre/modules/workers/require.js');