2014-06-25 10 views
8

Şu anda bir Mozilla Firefox addon üzerinde çalışıyorum.ReferenceError: required tanımlı değil

Bir panel oluşturdum ve buna bir içerik komut dosyası ekledim. İçerik komut dosyaları ve main.js. arasında iletişim kurmam gerekiyor. Bunun için addon-sdk port api kullanıyorum. Ancak, bazı nedenlerden dolayı, ikisi arasında basit bir mesaj bile alamıyorum.

Ben sürekli CFX kullanarak eklenti sınamak aşağıdaki hatayı alıyorum:

herhangi bir fikir sorun nedir: "ReferenceError tanımlanmadı gerektirir"?

popup.js

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

hatası, ilk hattın için atılır.

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

aynı hata

Herkes önce bu deneyimli main.js için atılan değil?

+0

Komut dosyası HTML'nizde mi? Çünkü yüklenmediğini düşünüyorum. –

+0

no. main.js –

cevap

12

İçerik komut dosyalarının require erişim hakkı yoktur. Bunun yerine self zaten bildirilmiştir.

popup.js satırından (main.js değil) yalnızca require satırını kaldırın.

Bkz. Communicating using "port".

+0

'dan bir içerik komut dosyası olarak ekledim Çok teşekkürler. Şuan çalışıyor. Bunun önemsiz olduğunu bir fikrim yoktu. Tekrar teşekkürler. –

+0

StackOverflow'da teşekkür etme yolu, probleminizi çözmenize yardımcı olan (onay işareti) ve/veya yanıtları yükseltmektir;) – nmaier

+0

Denedim. Oy veremem. Yeterli itibar yok. Cevabı kabul etmek için 3 dakika beklemek zorundayım. –