2017-05-25 12 views
1

以下のスクリプトでは、私のレポにコミットしたくないfirebase変数をハードコーディングしています。私のfirebaseの値はすべて1つのファイルに収められていて、残りの部分はES6モジュール(およびwebpack)を使用しているものをインポートします。しかし、私は、このサービスのワーカーファイルグローバル変数がgitでコミットされていないサービスワーカー

importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js'); 
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js'); 

// Initialize the Firebase app in the service worker by passing in the config.messagingSenderId. 
firebase.initializeApp({ 
    'messagingSenderId': "8033333334" 
}); 
// firebase.initializeApp({ 
// 'messagingSenderId': config.messagingSenderId 
// }); 

答えて

1

からのデータは、あなたがimportScripts()経由で参照する任意のスクリプトがメインサービスワーカーファイルと同じServiceWorkerGlobalScopeで同期実行されることをどのようにアクセスする必要があります。つまり、彼らは同じselfグローバルを共有しており、importScripts()が完了した後、彼らは完全に実行されることを知っています。

あなたはbootstrap.jsというスクリプトを持っていた、そしてそれは

self.config = self.config || {}; 
self.config.messagingSenderId = 'my_sender_id'; 

が含まれる場合それでは、あなたのservice-worker.jsで次の操作を行うことができます:

importScripts(
    'bootstrap.js', 
    'https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js', 
    'https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js' 
); 

firebase.initializeApp({ 
    'messagingSenderId': self.config.messagingSenderId 
}); 

それはあなたがbootstrap.jsにチェックするかどうかはあなた次第ですソース管理、ビルド時にオンザフライで生成するかどうかなど。

+0

ありがとう、私の既存の設定ファイルの 'export'行はプロblemので、私はswで必要なデータを別のファイルに分けました。少量の複製ではありますが、確実に良い方法です –