ReferenceError:未定义require

Sri*_*ran 8 javascript firefox jquery firefox-addon firefox-addon-sdk

我目前正在开发一个Mozilla Firefox插件.

我已经设置了一个面板并附加了一个内容脚本.我需要在内容脚本和main.js之间进行通信.我正在使用addon-sdk的端口api.但出于某种原因,我甚至无法在两者之间得到简单的信息.

当我使用cfx测试我的插件时,我不断收到以下错误:"ReferenceError:require is not defined"

知道什么是错的吗?

popup.js

var self = require("sdk/self");
self.port.on("dataToPopup", function (data) { 
$("p.test").text(data);
});
Run Code Online (Sandbox Code Playgroud)

第一行本身会引发错误.

main.js

var { ToggleButton } = require('sdk/ui/button/toggle');
var self = require("sdk/self");

var button = ToggleButton({
    id: "my-button",
    label: "my button",
    icon: {
        "16": "./images/tsfm16px.png"
    },
    onChange: handleChange
});

var panel = require("sdk/panel").Panel({
    contentURL: self.data.url("html/popup.html"),
    contentScriptFile: [self.data.url("scripts/jquery-1.9.1.min.js"), self.data.url("scripts/jquery-ui.js"), self.data.url("scripts/popup.js")],    
    onHide: handleHide
});

function handleChange(state) {
    if (state.checked) {
        panel.show({
            position: button
        });
    console.log("panel opened");    
    }
}

function handleHide() {
    button.state('window', {checked: false});
    console.log("panel closed");
}

panel.on("show", function() {
    panel.port.emit("dataToPopup", "flow");
    console.log("data sent");
});
Run Code Online (Sandbox Code Playgroud)

不会为main.js抛出相同的错误

以前有人经历过这个吗?

nma*_*ier 13

内容脚本无权访问require.相反self已经宣布.

只需requirepopup.js(但不是main.js)删除该行.

请参阅使用"端口"进行通信.