使用节点需要使用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