【问题标题】:Electron exits without emiting render-process-gone event电子存在而不发出render-process-gone事件
【发布时间】:2021-01-01 19:54:57
【问题描述】:

当我在某个加载到BrowserView 的网站上按下按钮时,电子应用程序会退出。这显然是一个崩溃,但它不会在 BrowserWindow(渲染器)或 BrowserView 上发出render-process-gone。它只是退出。但是window-all-closed被发射了

app.on('ready', () => {
  app.on('render-process-gone', (e, webContents, details) => {
    console.log('render-process-gone', details);
  });

  const win = new BrowserWindow({
    frame: false,    
    webPreferences: {
      worldSafeExecuteJavaScript: true,
      nodeIntegration: true,
      webviewTag: false,
      enableRemoteModule: false,
    }
  });

  win.loadURL('file://' + __dirname + '/renderer.html');

  const view = new BrowserView({
    webPreferences: {
      preload: 'preload.js'
      worldSafeExecuteJavaScript: true,
      nodeIntegration: false,
      nodeIntegrationInSubFrames: true,
      enableRemoteModule: false,
    }
  });

  view.webContents.loadURL('http://website.com');

  view.webContents.on('render-process-gone', (e, details) => {
    console.log('render-process-gone', details);
  });

  win.setBrowserView(view);  

});

app.on('window-all-closed', () => {
  console.log('exiting...');
  app.quit();
});

有没有办法找出导致这种情况的原因?


更新:我在 webPreferences 中添加了 sandbox: true,现在它不再崩溃了!

【问题讨论】:

  • 你在电子 10 上吗?该事件是在 10 (release notes) 中添加的,尽管文档会显示最新版本的文档并将其包含在内,因此您可能在文档中找到了一个示例并使用了它,尽管您的 Electron 版本不支持它跨度>
  • 你的电子版是?
  • 你用的是哪个操作系统?
  • 它发生在最新的 macOS 和 Windows 7 上
  • 所以下面的答案显示render-process-gone 事件已被添加而不是render-process-crashed

标签: javascript node.js electron


【解决方案1】:
Emitted when the renderer process crashes or is killed.

**Deprecated:** This event is superceded by the `render-process-gone` event
which contains more information about why the render process dissapeared. It
isn't always because it crashed.  The `killed` boolean can be replaced by
checking `reason === 'killed'` when you switch to that event.

#### Event: 'render-process-gone'

Returns:

* `event` Event
* `details` Object
  * `reason` String - The reason the render process is gone.  Possible values:
    * `clean-exit` - Process exited with an exit code of zero
    * `abnormal-exit` - Process exited with a non-zero exit code
    * `killed` - Process was sent a SIGTERM or otherwise killed externally
    * `crashed` - Process crashed
    * `oom` - Process ran out of memory
    * `launch-failure` - Process never successfully launched
    * `integrity-failure` - Windows code integrity checks failed

Emitted when the renderer process unexpectedly dissapears.  This is normally
because it was crashed or killed.
  • 在应用程序上添加了新的render-process-gone 事件以替换renderer-process-crashed 事件。 #23560
  • 添加了新的render-process-gone 事件来替换崩溃的事件。 #23096

参考号:https://github.com/electron/electron/pull/23096

https://github.com/electron/electron/pull/23560

【讨论】:

    猜你喜欢
    • 2014-05-29
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2021-07-29
    • 2013-04-03
    • 2014-03-18
    相关资源
    最近更新 更多