问题描述
我有一个处理三个电子事件的nodejs子进程,我需要在第二个进程之后完成它,所以我运行child.kill,在child.kill之后,我无法再次调用该进程..以下消息出现:错误[ERR_IPC_CHANNEL_CLOSED]:频道已关闭。
有什么办法可以杀死该进程以避免过多的内存使用,而是能够通过电子事件再次调用?
这是我的代码:
import { ipcMain } from 'electron'
import { fork } from 'child_process'
const child = fork('./child.js');
ipcMain.on('process',(event,arg) => {
child.send({
hello
})
child.on('message',(msg) => {
event.reply('process-reply',msg);
});
})`
ipcMain.on('process-2',arg) => {
child.send({
hello2
})
child.on('message',(msg) => {
event.reply('process2-reply',msg);
});
})
ipcMain.on('cancel-process',arg) => {
child.kill();
})
解决方法
我解决了这个问题,这比我预期的要容易得多, 这是一个范围问题,当我在ipcMain之外分叉child.js时,他没有按预期工作
这是:
ipcMain.on('process',(event,arg) => {
const child = fork('./child.js');
child.send({
hello
})
child.on('message',(msg) => {
event.reply('process-reply',msg);
});
ipcMain.on('process-2',arg) => {
child.send({
hello2
})
child.on('message',(msg) => {
event.reply('process2-reply',msg);
});
})
ipcMain.on('cancel-process',arg) => {
child.kill();
})
})`
谢谢