非常教程

Electron参考手册

crashReporter

crashReporter

将崩溃报告提交给远程服务器。

Process: Main, Renderer

以下是自动向远程服务器提交崩溃报告的示例:

const {crashReporter} = require('electron')

crashReporter.start({
  productName: 'YourName',
  companyName: 'YourCompany',
  submitURL: 'https://your-domain.com/url-to-submit',
  uploadToServer: true
})

要设置服务器来接受和处理崩溃报告,您可以使用以下项目:

  • socorro
  • mini-breakpad-server

崩溃报告本地保存在特定于应用程序的临时目录文件夹中。对于其中productName之一YourName,崩溃报告将存储在YourName Crashes临时目录内命名的文件夹中。您可以app.setPath('temp', '/my/custom/temp')在启动崩溃记者之前通过调用API 来为您的应用定制此临时目录位置。

Methods

crashReporter模块具有以下方法:

crashReporter.start(options)

  • options 目的
    • companyName 字符串(可选)
    • submitURL 字符串 - 崩溃报告将作为POST发送到的URL。
    • productName字符串(可选) - 默认为app.getName()
    • uploadToServer布尔值(可选) - 是否应将崩溃报告发送到服务器默认值为true
    • ignoreSystemCrashHandler布尔(可选) - 默认是false
    • extra对象(可选) - 您可以定义的对象将随报告一起发送。只有字符串属性才能正确发送。嵌套对象不受支持,属性名称和值必须少于64个字符长。

您需要在使用任何其他crashReporterAPI以及要从中收集崩溃报告的每个进程(主/渲染器)之前调用此方法。crashReporter.start从不同的进程调用时,可以传递不同的选项。

注意通过child_process模块创建的子进程无法访问Electron模块。因此,要收集来自它们的崩溃报告,请process.crashReporter.start改为使用。通过与上面相同的选项以及另外一个crashesDirectory应该指向临时存储崩溃报告的目录。您可以通过调用process.crash()以使子进程崩溃来进行测试。

注意:要从Windows中的子进程收集崩溃报告,您还需要添加此额外的代码。这将启动将监视和发送崩溃报告的过程。替换submitURLproductNamecrashesDirectory用适当的值。

注意:如果您需要extra在第一次通话后发送更多/更新的参数,则start可以调用setExtraParametermacOS或在Linux和Windows上start再次调用新的/更新的extra参数。

const args = [
   `--reporter-url=${submitURL}`,
   `--application-name=${productName}`,
   `--crashes-directory=${crashesDirectory}`
 ]
 const env = {
   ELECTRON_INTERNAL_CRASH_SERVICE: 1
 }
 spawn(process.execPath, args, {
   env: env,
   detached: true
 })

注意:在macOS上,Electron使用新的crashpad客户端进行崩溃收集和报告。如果您希望启用崩溃报告,则无论您要从哪个进程收集崩溃,都需要crashpad使用主进程进行初始化crashReporter.start。一旦以这种方式初始化,crashpad处理程序收集所有进程的崩溃。你仍然需要调用crashReporter.start从渲染器或子进程,否则崩溃从中会得到不报companyNameproductName或任何extra信息。

crashReporter.getLastCrashReport()

Returns CrashReport:

返回上次崩溃报告的日期和ID。如果没有发送崩溃报告或崩溃报告器尚未启动,null则返回。

crashReporter.getUploadedReports()

返回CrashReport[]

返回所有上传的崩溃报告。每个报告都包含日期和上传的ID。

crashReporter.getUploadToServer() Linux macOS

返回Boolean- 是否应将报告提交给服务器。通过该start方法设置或setUploadToServer

注意:此API只能从主进程中调用。

crashReporter.setUploadToServer(uploadToServer) Linux macOS

  • uploadToServer布尔值macOS - 是否应将报告提交给服务器

这通常由用户偏好来控制。如果调用之前start调用没有效果。

注意:此API只能从主进程中调用。

crashReporter.setExtraParameter(key, value) macOS

  • key 字符串 - 参数键的长度必须少于64个字符。
  • value字符串 - 参数值,长度不得超过64个字符。指定nullundefined将从额外参数中删除密钥。

设置与崩溃报告一起发送的额外参数。除了在调用extra时通过选项设置的任何值以外,还会发送此处指定的值start。此API仅在macOS上可用,如果您需要在第一次打电话给start您之后在Linux和Windows上添加/更新额外参数,可以start使用更新的extra选项再次调用。

Crash Report Payload

撞机记者将发送以下数据submitURLmultipart/form-data POST

  • ver 字符串 - Electron的版本。
  • platform 字符串 - 例如'win32'。
  • process_type 字符串 - 例如“渲染器”。
  • guid 字符串 - 例如'5e1286fc-da97-479e-918b-6bfb0c3d1c72'
  • _version字符串 - 中的版本package.json
  • _productName字符串 - crashReporter options对象中的产品名称。
  • prod字符串 - 基础产品的名称。在这种情况下,电子。
  • _companyName字符串 - crashReporter options对象中的公司名称。
  • upload_file_minidump文件 - 格式为的崩溃报告minidump
  • extra对象中所有对象的第一级属性crashReporter options
crashReporter
crashReporter 详细
Electron

Electron 是一个使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。

主页 https://electron.atom.io/
源码 https://github.com/electron/electron
发布版本 1.7.9