2016-04-08 14 views
0

webpackにグローバルスコープでモジュールを実行させる方法はありますか?具体的には、私のユースケースは、次のライブラリです:webpackグローバルスコープでモジュールを実行

次のコードがありhttps://github.com/AzureAD/azure-activedirectory-library-for-js/blob/master/lib/adal.js

var AuthenticationContext; 
if (typeof module !== 'undefined' && module.exports) { 
    module.exports.inject = function (conf) { 
     return new AuthenticationContext(conf); 
    }; 
} 

あなたはモジュールが(わからないなぜ彼らドンを注入機能をエクスポートしている見ることができるようにクラスをエクスポートするだけです)。私は、新しいAuthenticationContextオブジェクトを、注入関数を使ってうまく構築することができました。ただし、このライブラリの機能の一部は、グローバルAuthenticationContextクラスに依存しており、window.AuthenticationContext ===未定義のときはエラーになります。私はこのモジュールをwebpackにバンドルしたいと思いますが、どうにかして、AuthenticationContextをグローバルスコープで利用できるようにする必要があります。それを行う方法はありますか?

私はProvidePluginについて読んだことがありますが、ProvidePluginがエクスポートされた値を受け取り、それをグローバルスコープに接続することを理解しています。この場合、エクスポートされていない値をグローバルスコープで使用できるようにする必要があります。

最も明白な解決策は、このモジュールをグローバルスコープで実行することです。しかし、私はこのモジュールをバンドルの一部にしたいと思います。どうすればこれを達成できますか?

ありがとうございます。

答えて

0

私は、次のコードでこれを解決すると思う:基本的に、私は手動でコンストラクタを露出させています

import {inject} from 'adal-angular/lib/adal.js'; 
import config from './auth-config'; 

export default class Authenticator { 
    constructor() { 
     this.authContext = inject(config); 
     window.AuthenticationContext = this.authContext.constructor; 
    } 
} 

関連する問題