2016-04-08 24 views
0

Global kapsamda webpack yürütme modülüne sahip olmanın bir yolu var mı? Özellikle, benim kullanma durumu şu kütüphanesidir:webpack yürütme modülü

Aşağıdaki kod yoktur 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); 
    }; 
} 

modül (emin değilim neden onlar don bir enjeksiyon fonksiyonu ihraç görebileceğiniz gibi sadece sınıfı ihraç etmeyin). Enjeksiyon işlevini kullanarak başarıyla yeni bir AuthenticationContext nesnesi oluşturabiliyorum. Ancak, bu kitaplıktaki bazı işlevler global bir AuthenticationContext sınıfına dayanır ve window.AuthenticationContext === undefined olduğunda hata verir. Bu modülü web paketi ile paketlemek istiyorum, ancak bir şekilde, AuthenticationContext'in global kapsamda kullanılabilir olmasını sağlamalıyım. Bunu yapmanın bir yolu var mı?

ProvidePlugin hakkında okudum ama ProvidePlugin'in sadece ihraç edilmiş bir değer aldığını ve bunu global kapsama eklediğini anladığım kadarıyla. Bu durumda, ihraç edilmeyen bir değerin global kapsamda mevcut olmasını sağlamalıyım.

En belirgin çözüm, bu modülü yalnızca global kapsamda yürütmektir. Ancak, bu modülün paketin bir parçası olmasını isterim. Bunu nasıl başarabilirim?

Şimdiden teşekkürler.

cevap

0

ben aşağıdaki kodla bu çözdük:

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

temelde, el yapıcı açığa ediyorum.