【发布时间】:2018-08-26 19:52:17
【问题描述】:
我想在文件夹中添加一个模块,作为插件。所以我希望用户能够将 JavaScript 文件添加到已经编译的电子/webpack 应用程序中,并让我的应用程序加载并执行它。所以它就像一个插件系统。我曾尝试要求 plugins/ 文件夹中的每个文件,但事实证明它只是在编译时被捆绑到 bundle.js 中,我希望能够在编译后更改它,就像一个插件一样。我怎样才能做到这一点?
【问题讨论】:
我想在文件夹中添加一个模块,作为插件。所以我希望用户能够将 JavaScript 文件添加到已经编译的电子/webpack 应用程序中,并让我的应用程序加载并执行它。所以它就像一个插件系统。我曾尝试要求 plugins/ 文件夹中的每个文件,但事实证明它只是在编译时被捆绑到 bundle.js 中,我希望能够在编译后更改它,就像一个插件一样。我怎样才能做到这一点?
【问题讨论】:
我认为您正在寻找的是global.require,如this similar question 中所述。
请注意,由于它是 Node 的 require,它将缓存所需的模块,因此在您重新启动电子应用程序以便它再次调用 global.require 之前,修改插件的代码不会生效。如果这是一个问题,您可以使用此(不推荐的)sn-p 强制重新加载特定模块:
delete global.require.cache[global.require.resolve(moduleName)]
【讨论】:
global.require 会抛出一个错误说 global.require is not a function 。有什么想法会出错吗?我正在使用vue-cli-plugin-electron-build 用vue 创建一个电子应用程序。