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模块)做着几乎相同的工作