我正在使用Electron构建一个项目,并使用Webpack构建(Angular 2)渲染过程应用程序。
在这个应用程序中,我需要在运行时动态require
一些在构建时不存在的文件。代码看起来像这样:
require("fs").readdirSync(this.path).forEach(file => {
let myModule = require(path.join(this.path, file));
// do stuff with myModule
});
问题是Webpack编译器会将require()
调用转换为它自己的__webpack_require__()
,并且在运行时,它会在自己的内部模块注册表中查找动态“myModule”文件,当然不会找到它。
我尝试使用“externals”配置选项,但由于这是一个动态需求,它似乎不会被“外部”处理。
其他人是否成功解决了这个问题?
答案 0 :(得分:2)
根据@jantimon对我的问题的评论中的建议,解决方案是使用global.require
:
require("fs").readdirSync(this.path).forEach(file => {
let myModule = global.require(path.join(this.path, file));
// do stuff with myModule
});