2016-11-24 29 views
1

我在构建电子应用程序。 在开发过程中,我发现使用浏览器进行实施,调试和测试非常高效。 但是,当使用任何电子专用模块(remote.require,ipc等)时,webpack无法构建js。针对网络的电子构建策略

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

我有2个的WebPack CONFIGS,一个是网络,一个用于电子,我指定目标=电子,工作正常 看来,网页版(即没有这个目标),投诉电子模块

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

如果我删除了电子需要

任何人有这样的情况会消失?

问候

回答

0

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相关的操作。
+0

嗨。我在这里为此打开了一张票。 https://github.com/webpack/webpack/issues/3376#issuecomment-267376624 – Thomas