2012-01-15 9 views
0

Mozilla Addonビルダー(Node.js/common.js)を使用してFireFoxアドオンを構築しています。ビルダーがデフォルトで与えるData-Folderには、問題のファイル(後述)があります。 file1とfile2を::データフォルダ(デフォルトで来る)私は2つのファイルを持って
jsファイルがデータフォルダにある場合に必要な機能にアクセスする

はFile1

exports.foo = foo; 

functions foo() { 
    return true 
} 

File2の

$('#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); 
    } 

}); 

FILE1私は試している機能を持っていますファイル2がfile1のエクスポートされた機能を使用しようとしている間にエクスポートする。私が持っている問題は、この例外がfile2をスローしていることである:

にReferenceError:誰もがそれは彼らがのLibフォルダにある場合に正常に動作しますが、私、注意してください(この問題を解決する方法を知っている必要が

が定義されていません。 Data-Folderでそれらを必要としますか?)

+0

「../ Folder/file1.js」の「Folder」とは何ですか? –

+0

@MikeSamuel: "/ Folder /"は無視できます。私は質問からそれを削除しました。まだ興味がある場合に備えて、それはfile1が保存されているフォルダです。 – Phil

+1

'data'フォルダは特権コードではありません。 「私はデータフォルダに必要です」 - なぜですか?あなたはコンテンツスクリプトから特権コードを実行しようとしていますか?これはうまくいかず、コンテンツスクリプトはメインの内線番号に返信する必要があります。 –

答えて

1

@Phil:セキュリティ上の理由から、データフォルダ(コンテンツとやりとりすることができます)とlibフォルダ(Mozilla apisと直接対話できます)との間でコードを共有することはできません。 2つの間で通信する必要がある場合は、非同期メッセージの受け渡しを使用する必要があります。どのように動作するかについては、ドキュメントを参照してください。https://addons.mozilla.org/en-US/developers/docs/sdk/1.4/dev-guide/addon-development/web-content.html

+0

答えをありがとう。あなたの答えの中で、Firefoxビルダーアドオン(データを取得する手段としての役割を果たすjsファイル、ビジネスロジックとmain.jsをUIレイヤーとするものなど)でn層アーキテクチャに似たものを構築するにはどうすればよいですか? ? – Phil

+0

これは、コンポーネントごとに別々のモジュールを作成したいと思うように聞こえますか? – canuckistani

+0

リンクが死んでいます – Bulwersator

関連する問題