【问题标题】:ReferenceError: require is not definedReferenceError:未定义要求
【发布时间】:2014-06-25 14:57:22
【问题描述】:

我目前正在开发 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);
});

错误是针对第一行本身引发的。

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");
});

main.js 没有抛出同样的错误

以前有人经历过吗?

【问题讨论】:

  • 您的 HTML 中有脚本文件吗?因为我认为它没有被加载。
  • 没有。我将它添加为 main.js 中的内容脚本

标签: javascript jquery firefox firefox-addon firefox-addon-sdk


【解决方案1】:

内容脚本无权访问require。而是 self 已声明

只需从popup.js 中删除require 行(但不是main.js)。

Communicating using "port"

【讨论】:

  • 非常感谢。现在可以了。我不知道这是一个微不足道的错误。再次感谢。
  • 在 StackOverflow 上表示感谢的方式是接受(复选标记)和/或支持帮助您甚至解决问题的答案;)
  • 我试过了。不能投票。声望不够。我必须等待 3 分钟才能接受答案。
  • 不用担心...我只是不确定您是否知道,因为您的帐户是新帐户。 ;)
猜你喜欢
  • 2015-06-12
  • 2021-11-08
  • 2018-03-01
  • 1970-01-01
  • 2023-03-10
  • 2019-03-19
  • 2020-12-26
  • 2015-03-15
  • 1970-01-01
相关资源
最近更新 更多