我正在为Overwolf http://developers.overwolf.com/documentation/sdk/overwolf/开发应用程序

该平台的应用程序是在Overwolf浏览器中执行的html / js应用程序。浏览器通过全局变量overwolf公开Overwolf API,例如,对该API的调用如下所示:

overwolf.windows.getCurrentWindow(function callback(res) {
    var id = res.window.id;
    overwolf.windows.close(id, function callback() {
        logger.warning("Closing App!");
    });
});


(注意,未导入任何脚本,浏览器公开了该API)
我目前正在尝试将普通的JS应用程序迁移到React,并且在暴露其API的方式时遇到一些问题。因为我没有导入任何类型的脚本,所以React不知道该全局变量,因此无法编译并显示以下错误:

Line 6: 'overwolf' is not defined no-undef

我试图解决这样的问题:

const overwolf = typeof overwolf === 'undefined' ? null : overwolf;

在这种情况下,狼人将始终被覆盖为null。
如果我这样尝试

const overwolfGlobal = typeof overwolf === 'undefined' ? null : overwolf;


react编译器将再次抱怨typeof overwolf

所以我的通用问题是:
我该如何使用运行时提供的全局变量,因此React(和Webpack)不知道这些全局变量

最佳答案

您需要在webpack配置对象上提供externals配置选项。
以下内容告诉Webpack overwolf库应该作为全局变量可用:

externals: {
  overwolf: {
    root: 'overwolf'
  }
}


阅读有关Webpack externals的更多信息:


  防止捆绑某些import软件包,而是在运行时检索这些外部依赖项。

09-07 11:34