使用节点需要使用Electron和Webpack

我正在用Electron构build一个项目,并使用Webpack构build(Angular 2)渲染过程应用程序。

在这个应用程序中,我需要dynamic地在运行时require一些在构build时不存在的文件。 代码看起来像这样:

 require("fs").readdirSync(this.path).forEach(file => { let myModule = require(path.join(this.path, file)); // do stuff with myModule }); 

问题是Webpack编译器会将require()调用转换为它自己的__webpack_require__()并且在运行时它会在它自己的内部模块registry中查找dynamic的“myModule”文件,当然也不会find它。

我曾尝试使用“外部”configuration选项,但由于这是一个dynamic的要求,它似乎并没有被“外部”处理。

任何人都能成功解决这个问题?

正如@jantimon对我的问题的评论中所build议的,解决scheme是使用global.require

 require("fs").readdirSync(this.path).forEach(file => { let myModule = global.require(path.join(this.path, file)); // do stuff with myModule }); 

我遇到了这篇文章,由于某些其他原因,作者需要不被webpack转发的节点模块。 他build议使用

 new webpack.IgnorePlugin(new RegExp("^(fs|ipc)$")) 

在webpack.config.js文件中。 这应该防止传输模块fs和ipc,因此可以在代码中使用(必需)。

我不确定这是否也会影响您的问题,但这可能会有所帮助。

有关更多上下文的原始文章可以在这里find: https : //medium.com/@Agro/developing-desktop-applications-with-electron-and-react-40d117d97564#.927tyjq0y