首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分叉式电子过程需要“空”电子

分叉式电子过程需要“空”电子
EN

Stack Overflow用户
提问于 2019-08-19 15:29:05
回答 1查看 523关注 0票数 0

我正在节点中构建一个命令行接口,它连接到后台命令行守护进程。如果没有运行守护进程,则当第一次调用cli时,它将使用child_process.fork发送守护进程。

守护进程需要启动电子BrowserWindow的实例,但是需要电子是显示了不寻常的行为。

如果在前台自己运行守护进程,一切都会顺利进行;但是在后台,当需要电子时,我会得到一个空模块。

Object.keys(require('electron'))打印到控制台显示数字序列0..84,打印require('electron')的结果显示字符串/path/to/electron/dist/electron

打印出process.argv显示分叉脚本肯定是用电子执行的。

我很困惑。任何方向都将不胜感激。

示例:

启动器

代码语言:javascript
运行
复制
#!/usr/local/bin/electron
const cp = require('child_process');
console.log();
const cld = cp.fork(__dirname+'/daemon',{
  stdio:['inherit','inherit','inherit','ipc']
});
cld.on('message', (code) => {
  code = parseInt(code);
  cld.disconnect();
  process.exit(code);
});

守护进程

代码语言:javascript
运行
复制
#!/usr/local/bin/electron
const fs=require('fs');
const log = (x)=>fs.appendFileSync('log',x+'\n\n');
log('');
if(!process.send) process.send = console.log;
log(process.argv);
const e = require('electron');
log(e);
log(Object.keys(e));
log(e.app);
process.send(0);

结果日志文件

代码语言:javascript
运行
复制
*removed*/lib/thirdparty/node_modules/electron/dist/electron,*removed*/tmp/daemon

*removed*/lib/thirdparty/node_modules/electron/dist/electron

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84

undefined

只运行守护进程的日志文件

代码语言:javascript
运行
复制
*removed*/lib/thirdparty/node_modules/electron/dist/electron,./daemon

[object Object]

clipboard,nativeImage,shell,app,autoUpdater,BrowserView,BrowserWindow,contentTracing,crashReporter,dialog,globalShortcut,ipcMain,inAppPurchase,Menu,MenuItem,net,netLog,Notification,powerMonitor,powerSaveBlocker,protocol,screen,session,systemPreferences,TopLevelWindow,TouchBar,Tray,View,webContents,WebContentsView

[object App]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-19 23:12:28

默认情况下,分叉处理设置为ELECTRON_RUN_AS_NODE=1,不会公开任何特定于电子的模块:

正如https://github.com/electron/electron/issues/6656所说,您可能需要通过单独显式调用流程来解决问题,反之亦然。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57559775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档