2014-06-25 23 views
8

Aktualnie pracuję nad dodatkiem Mozilla Firefox.ReferenceError: require nie jest zdefiniowany

Ustawiłem panel i dołączyłem do niego skrypt zawartości. Muszę komunikować się między skryptami treści a plikiem main.js. Używam do tego celu portu API dla addon-sdk. Jednak z jakiegoś powodu nie mogę nawet uzyskać prostego komunikatu między tymi dwoma.

jestem stale otrzymaniu następujący błąd podczas przetestować dodatek używając CFX: „ReferenceError: require nie jest zdefiniowana”

Każdy pomysł co jest nie tak?

popup.js

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

Błąd jest generowany dla pierwszego samej linii.

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

Ten sam błąd nie jest wyrzucane na main.js

Każdy doświadczył tego wcześniej?

+0

Czy masz plik skryptu w swoim kodzie HTML? Ponieważ myślę, że nie jest załadowany. –

+0

nie. dodałem go jako skrypt treści z main.js –

Odpowiedz

12

Skrypty dotyczące treści nie mają dostępu do require. Zamiast tego self jest już zadeklarowany jako.

Po prostu usuń linię require z popup.js (ale nie main.js).

Zobacz Communicating using "port".

+0

Wielkie dzięki. Teraz działa. Nie miałem pojęcia, że ​​to był nieistotny błąd. Jeszcze raz dziękuję. –

+0

Sposobem podziękowania na StackOverflow jest akceptowanie (zaznaczenie) i/lub udzielanie odpowiedzi na pytania, które pomogły ci rozwiązać problem;) – nmaier

+0

Próbowałem. Nie można głosować w górę. Za mało reputacji. Muszę poczekać 3 minuty, aby zaakceptować odpowiedź. –

Powiązane problemy