2014-06-25 877 views
8

我目前正在使用Mozilla Firefox插件。ReferenceError:require is not defined

我已經設置了一個面板並附加了一個內容腳本。我需要在內容腳本和main.js之間進行通信。我正在使用addon-sdk的端口API。然而,由於某種原因,我甚至無法在兩者之間得到簡單的信息。

我不斷收到以下錯誤,當我使用CFX測試我的插件「的ReferenceError:要求沒有定義」

任何想法有什麼不對?

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

任何人都經歷過這個?

+0

你在HTML中有腳本文件嗎?因爲我認爲它沒有被加載。 –

+0

沒有。我將它作爲內容腳本添加到main.js中 –

回答

12

內容腳本無權訪問require。相反,self已被宣佈爲

只需從popup.js(但不是main.js)刪除require行。

請參閱Communicating using "port"

+0

非常感謝。它現在有效。我不知道這是一個微不足道的錯誤。再次感謝。 –

+0

在StackOverflow上表示感謝的方式是接受(複選標記)和/或upvoting幫助你甚至解決你的問題的答案;) – nmaier

+0

我試過了。不能投票。沒有足夠的聲譽。我必須等待3分鐘才能接受答案。 –

相關問題