网络的电子构建策略

时间:2016-11-24 11:32:47

标签: webpack electron

我正在构建一个Electron应用程序。 在开发过程中,我发现使用浏览器进行实现,调试和测试非常有效。 但是,当使用任何电子专用模块(remote.require,ipc等)时,webpack无法构建js。

处理此类案件的最佳做法是什么?

我有2个webpack配置,一个用于网络,一个用于电子,我指定目标=电子,工作正常 似乎是网络版(没有这个目标),投诉电子模块

下面是一个示例模块,其中我有条件地尝试要求电子,但webpack无论如何都试图将其包含在网络中

const isElectron = (function(){
    return navigator.userAgent.indexOf("Electron") == -1;
})();


export default {
    require: (module) => {
        if(isElectron){
            const electron = require("electron");
            return electron.remote.require(module);
        }
        return require(module);
    }
}

我甚至添加了

然而,当webpack运行时,我得到了

ERROR in ./~/electron/index.js
Module not found: Error: Cannot resolve module 'fs'

如果我移除电子需要消失

有这种情况的其他人吗?

此致

1 个答案:

答案 0 :(得分:1)

AFAIK您无法从主要访问渲染器中的fs。我解决这个问题的方法是在我的主进程中定义fs并使用共享对象使其可访问:

// main global.sharedObject = { cwd: __dirname, appDir: app.getPath('userData') };

// renderer console.log(electron.remote.getGlobal('sharedObject').cwd);

根据您的情况,您可能会例如:

  • 使用类似electron-json-storage
  • 的内容
  • 在main中定义所有路径并通过共享对象访问它们
  • 使用IPC调用与fs相关的操作。