我正在为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
软件包,而是在运行时检索这些外部依赖项。