Dependencies Web包:ES6构造函数中的require()-

Dependencies Web包:ES6构造函数中的require()-,dependencies,ecmascript-6,webpack,require,Dependencies,Ecmascript 6,Webpack,Require,我有一个使用module.exports生成的动态JSON文件 A.js module.exports = { regexes: [ /aaa/, /bbb/ ] } var config = require('./A'); 当我这样做时,效果很好: B.js module.exports = { regexes: [ /aaa/, /bbb/ ] } var config = require('./A'); 但现在我有了这样一个场景,路径

我有一个使用
module.exports生成的动态JSON文件

A.js

module.exports = {
  regexes: [
    /aaa/,
    /bbb/
  ]
}
var config = require('./A');
当我这样做时,效果很好:

B.js

module.exports = {
  regexes: [
    /aaa/,
    /bbb/
  ]
}
var config = require('./A');
但现在我有了这样一个场景,路径未知,并作为参数传递给ES6类。所以我试着:

class B {
  constructor( private dir: string ) {
     const configpath = path.join(dir, 'serverConfig.js');
     const config = require(`${configpath}`);
  }
}
我得到了错误

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

未找到模块:错误:不允许对入口点的依赖关系

它是通过这样的网页进行编译的

 var configpath = path.join(this.configDir, 'serverConfig.js');
 this.serverConfig = __webpack_require__(24)("" + configpath);
这应该是可行的,正如这个简单的es5代码所示:

var A = function() {
  var name = 'util';
  var util = require(name);
}

a = new A();
我不确定我在这里做错了什么。是否有要更改的网页包配置

另外,当我实际运行代码时(因为这只是一个警告),我得到以下错误:

错误:找不到模块“[correctPath]/serverConfig.js”。


其中[correctPath]确实是可见性的一个限制。

为什么不在创建
B
并传入整个配置之前要求配置?问题在于,因为您的
require
是动态的,所以Webpack无法知道它引用了什么文件,因此无法在最终应用程序中捆绑该文件。动态
require
调用是个坏主意。我刚刚意识到之前webpack需要静态requires。我费了很大的劲才得到这个信息,而且看起来Webpack2支持System.import动态加载模块。最后,我回到了
tsc
,它对我的场景(一个纯node.js模块)做着几乎相同的工作