2016-11-24 26 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