crashReporter
将崩溃报告提交给远程服务器。
Process: Main, Renderer
以下是自动向远程服务器提交崩溃报告的示例:
const {crashReporter} = require('electron')
crashReporter.start({
productName: 'YourName',
companyName: 'YourCompany',
submitURL: 'https://your-domain.com/url-to-submit',
uploadToServer: true
})要设置服务器来接受和处理崩溃报告,您可以使用以下项目:
崩溃报告本地保存在特定于应用程序的临时目录文件夹中。对于其中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中的子进程收集崩溃报告,您还需要添加此额外的代码。这将启动将监视和发送崩溃报告的过程。替换submitURL,productName并crashesDirectory用适当的值。
注意:如果您需要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从渲染器或子进程,否则崩溃从中会得到不报companyName,productName或任何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个字符。指定null或undefined将从额外参数中删除密钥。
设置与崩溃报告一起发送的额外参数。除了在调用extra时通过选项设置的任何值以外,还会发送此处指定的值start。此API仅在macOS上可用,如果您需要在第一次打电话给start您之后在Linux和Windows上添加/更新额外参数,可以start使用更新的extra选项再次调用。
Crash Report Payload
撞机记者将发送以下数据submitURL为multipart/form-data POST:
ver字符串 - Electron的版本。platform字符串 - 例如'win32'。process_type字符串 - 例如“渲染器”。guid字符串 - 例如'5e1286fc-da97-479e-918b-6bfb0c3d1c72'_version字符串 - 中的版本package.json。_productName字符串 -crashReporteroptions对象中的产品名称。prod字符串 - 基础产品的名称。在这种情况下,电子。_companyName字符串 -crashReporteroptions对象中的公司名称。upload_file_minidump文件 - 格式为的崩溃报告minidump。extra对象中所有对象的第一级属性crashReporteroptions。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

