Javascript 使用React中的全局变量,这些变量在运行时提供,因此在构建时未知

Javascript 使用React中的全局变量,这些变量在运行时提供,因此在构建时未知,javascript,reactjs,webpack,Javascript,Reactjs,Webpack,我正在为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() {

我正在为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应用程序以作出反应,并且在其API的公开方式方面面临一些问题。由于我没有导入任何类型的脚本,React不知道该全局变量,因此将无法编译,并出现以下错误:

第6行:“overwolf”未定义无未定义

我试图像这样解决这个问题:

const overwolf=typeof overwolf==‘未定义’?空:过卷

在这种情况下,overwolf将始终覆盖为null。 如果我试着这样做

const overwolfGlobal = typeof overwolf === 'undefined' ? null : overwolf;
react编译器将再次抱怨overwolf的
类型

所以我的一般问题是:
如何处理在运行时提供的全局变量,因此无法对其做出反应(以及Webpack)

您需要在Webpack配置对象上提供
外部配置选项。
以下内容告诉Webpack,
overwalf
库应作为全局变量提供:

externals: {
  overwolf: {
    root: 'overwolf'
  }
}
阅读更多关于:

防止捆绑某些导入
ed包,而是在运行时检索这些外部依赖项


是否有类似于其他浏览器的
窗口
对象?如果您使用的是webpack,请尝试在您的webpack配置中为overwolf定义外部对象。我将尝试外部方法thanks@PatrickHund外部方法有效,谢谢!如果你不想从中得出答案,我会接受它,因为这是为生产构建修复的,但是在dev服务器上它仍然会抛出错误,你知道在dev服务器上模拟外部的方法吗?我没有使用overwolf浏览器的经验,但应该在该浏览器中使用相同的网页配置(假设:环境提供了<代码>过狼< /COD>全局变量)。如果没有,则应该考虑添加脚本(如果存在)提供这样的对象。如果问题仍然存在,请创建另一个问题,并让我知道链接,以便我可以检查并提供更有用的答案。干杯!这是问题的问题我只是为您的
webpack dev server
方案添加了一个可能的解决方案。我想我的问题可以帮助您对webpack和pos进行一些配置如果尚未使用最新版本,则可以将其迁移到最新版本。