繁体   English   中英

全局范围内的webpack执行模块

[英]webpack execute module in global scope

有什么办法可以让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 === undefined时出错。 我想将此模块与webpack捆绑在一起,但是以某种方式,我需要确保AuthenticationContext在全局范围内可用。 有什么办法吗?

我已经阅读了ProvidePlugin,但是据我所知,ProvidePlugin只是采用导出的值并将其附加到全局范围。 在这种情况下,我需要确保未导出的值在全局范围内可用。

最明显的解决方案是仅在全局范围内执行此模块。 但是,我希望这个模块成为捆绑包的一部分。 我该怎么做?

提前致谢。

我想我用以下代码解决了这个问题:

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

基本上,我是手动公开构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM