簡體   English   中英

在編譯和縮小后使child_process.fork()在電子中工作

[英]Getting child_process.fork() to work in electron when compiled and minified

所以基本上我正在構建一個電子應用程序。 我遇到了一個有趣的問題,我已經嘗試解決了幾個小時。 應用程序的一部分需要是與源目錄相關的分叉進程(child_process.fork())。

像這樣:

 - app - main-process - core - manager - index.js - fork.js - some-module.js - main.js 

webpack將源代碼編譯為一個文件/捆綁包(main.js文件),並在app.asar中編譯electron-builder。

我遇到的問題是如何在相對目錄中使用child_process.fork(),該相對目錄在編譯和縮小應用程序時要求分叉進程中的模塊。 現在,編譯時所需的那些模塊已在main.js文件中進行了優化,因此在fork.js中丟失了引用,從而找不到“ some-module”。

 // app/main-process/core/manager/index.js const child_process = require('child_process'); let child = child_process.fork('./fork.js'); child.send('start'); // app/main-process/core/manager/fork.js const someModule = require('./some-module'); someModule(()=>{ ... }) 

編譯后,webpack會自動將這些需求路徑解析為捆綁中的引用,但是由於child_process.fork()需要一個文件,因此這是行不通的。

Webpack配置是相當嚴格的配置。 它不是一個復雜的應用程序。 這是一個多webpack的配置,但我只是顯示了主進程的配置。

 const backend = { entry:path.resolve(__dirname, '../app/main.js'), devtool:false, target:'node', output: { filename: 'main-compiled.js', sourceMapFilename: 'main-compiled.js.map', }, node:{ fs:'empty', http:'empty', crypto:'empty', electorn:'empty', __dirname:true, __filename:true, }, module:{ loaders:[ { test:/\\.json$/, use:[ {loader:'json-loader'}, ] } ] }, plugins:[ new webpack.optimize.UglifyJsPlugin({ sourceMap:true, parallel: true, compress:{ warnings:false, drop_console:true } }) ], externals:[ nodeExternals(), ] }; 

我已經弄清楚了,使用webpack可以將這個fork.js文件排除在捆綁包之外,而對於Electro-builder,可以通過使用config中的files數組保留目錄構造函數。

我想到了。 我使思考過程變得過於復雜。 可以通過使用集群主/工作者模式並僅使用main.js文件來協調以“子”(fork)生成時通過命令參數執行什么邏輯的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM