如何在第三方库中修复动态需求?

use*_*325 5 node.js webpack

我的桌面应用程序使用Electron + React作为接口,Edge.js将Node与我的C#应用​​程序连接.

我的问题是:Webpack无法捆绑我的应用程序,因为Edge.js依赖项会引发以下错误:

关键依赖:依赖的请求是表达式

问题是Edge.js具有以下动态需求:

var compilerName = 'edge-' + language.toLowerCase();
var compiler = require(compilerName);
Run Code Online (Sandbox Code Playgroud)

大多数时候,compilerName将被翻译为"edge-cs",但Webpack无法确定这一点.

我该如何解决这个问题?人们建议设置require上下文ContextReplacementPlugin,但它们通常都适用于你拥有的情况require('./directory/' + variable),我不知道如何在我拥有它的情况下使用它们require(variable).

注意:我需要一个解决方案,我不需要修改我的第三方库代码.

nil*_*esh 1

我认为这是不可能的,您是否考虑过像下面这样的大型开关?这里建议

switch (name) {
  case 'a': return require('./a');
  case 'b': return require('./b');
  // etc...
}
Run Code Online (Sandbox Code Playgroud)