2012-01-15 13 views
0

我正在使用Mozilla Addon構建器(Node.js/common.js)構建FireFox插件。請注意,我在默認情況下由構建器爲您提供的數據文件夾中存在有問題的文件(稍後解釋)。
當js文件在數據文件夾中時訪問所需函數

數據文件夾(默認自帶)我有兩個文件:文件1和文件2:

文件1

exports.foo = foo; 

functions foo() { 
    return true 
} 

文件2

$('#aTestButton').click(function() { 

    try 
    { 
     //The problem: An exception is thrown due to the code below. The exception is: 
     //ReferenceError: require is not defined 
     var A_Module = require('file1.js'); 
     var fooValue = A_Module().foo(); 
    } 

    catch(err) 
    { 
     alert(err); 
    } 

}); 

文件1有一個功能,我嘗試在file2嘗試使用file1的導出函數時導出。我的問題是,文件2拋出此異常:

的ReferenceError:要求沒有定義

有誰知道如何解決這個問題(注意,當他們在庫文件夾,它工作正常,但我需要他們在數據文件夾中)?

+0

「../ Folder/file1.js''中的」文件夾「是什麼? – 2012-01-15 21:09:15

+0

@MikeSamuel:你可以忽略「/ Folder /」。我從問題中刪除了它。萬一你仍然好奇,它就是存儲file1的文件夾。 – Phil 2012-01-15 21:14:56

+1

'data'文件夾不適用於特權代碼。請展開「我在數據文件夾中需要它們」 - 爲什麼?你是否試圖從內容腳本運行特權代碼?這是行不通的,內容腳本需要回傳給主擴展。 – 2012-01-16 06:48:44

回答

1

@Phil:出於安全原因,您無法在數據文件夾(可與內容交互)和lib文件夾(可直接與Mozilla apis交互)之間共享代碼。如果您需要在兩者之間進行通信,則需要使用異步消息傳遞。有關所有這些工作原理的更多信息,請參閱文檔:https://addons.mozilla.org/en-US/developers/docs/sdk/1.4/dev-guide/addon-development/web-content.html

+0

感謝您的回答。在你的答案的思路中,你如何在Firefox builder addon上構建類似於n層體系結構的東西(如用作獲取數據的手段的js文件,用業務邏輯和main.js作爲UI層的另一個文件) ? – Phil 2012-01-17 03:08:39

+0

這聽起來像你想要做的是爲每個組件創建單獨的模塊? – canuckistani 2012-01-19 04:10:29

+0

鏈接現已停止 – Bulwersator 2013-09-07 12:25:07

相關問題