【问题标题】:Electron build strategy for web网络的电子构建策略
【发布时间】:2017-04-08 16:40:37
【问题描述】:

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

处理此类情况的最佳做法是什么?

我有 2 个 webpack 配置,一个用于 web,一个用于电子,我指定 target=electron,效果很好 好像网页版(没有这个目标),对电子模块的抱怨

下面是一个示例模块,我有条件地尝试要求电子,但 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'

如果我删除电子需求,它就会消失

还有其他人有这种情况吗?

问候

【问题讨论】:

    标签: webpack electron


    【解决方案1】:

    AFAIK 您无法从 renderer 访问 fs,只能从 main 访问。我解决这个问题的方法是在我的主进程中定义fs并使用共享对象使其可访问:

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

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

    根据您的情况,您可以例如:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-28
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 2011-01-04
    相关资源
    最近更新 更多