@ 浏览器无/ errors: Puppeteer 的合格错误集合 .
安装
使用 npm :
npm install @browserless/errors --save
关于
此软件包提供 标准化、限定性错误类型 用于Puppeteer和无浏览器操作。 它使原始浏览器出错正常化为一致的,打入有独特出错代码的出错,以便于调试和出错处理.
这个软件包做什么
这个 @browserless/errors 软件包允许您 :
- 创建已输入错误 带有一致的结构和错误代码
- 将原始错误规范化 从傀儡变成合格的
BrowserlessError实例 - 识别出错类型 程序上使用错误代码
- 除错出错 内置序列化和记录
错误类型
| 错误厂 | 代码 | 说明 |
|---|---|---|
browserTimeout | EBRWSRTIMEOUT | 承诺或导航超时 |
protocolError | EPROTOCOL | Chrome DevTools 协议错误 |
evaluationFailed | EINVALEVAL | 页面评价/字符执行失败 |
contextDisconnected | EBRWSRCONTEXTCONNRESET | 浏览器上下文连接被重置 |
pageRange | EPAGERANGE | printToPDF 从文档末尾开始的页面范围 |
代码带有重试性: 核心重试 EPROTOCOL 财务报告和审定财务报表 EBRWSRCONTEXTCONNRESET没有别的. EPAGERANGE 之所以存在,是因为一个令人不满意的页面范围是决定性的一个协议失败——重试它会烧掉呼叫者的预算,并且会浮出一个超时,而不是真正的原因.
使用量
const errors = require('@browserless/errors')
// Create a timeout error
const timeoutError = errors.browserTimeout({ timeout: 30000 })
// => BrowserlessError: EBRWSRTIMEOUT, Promise timed out after 30000 milliseconds
// Create a protocol error
const protocolError = errors.protocolError({ message: 'Printing failed' })
// => BrowserlessError: EPROTOCOL, Printing failed
// Create an evaluation error
const evalError = errors.evaluationFailed({ message: 'foo is not defined' })
// => BrowserlessError: EINVALEVAL, foo is not defined
// Normalize a raw error from Puppeteer (page target gone mid-evaluate)
const rawError = { message: 'Protocol error (Runtime.evaluate): Target closed' }
const normalizedError = errors.ensureError(rawError)
// => BrowserlessError: EBRWSRCONTEXTCONNRESET, The browser context is not connected.
// Normalize a page range Chrome cannot satisfy
const rangeError = errors.ensureError({
message: 'Protocol error (Page.printToPDF): Page range exceeds page count'
})
// => BrowserlessError: EPAGERANGE, Page range exceeds page count
// Check if an error is a BrowserlessError
if (errors.isBrowserlessError(normalizedError)) {
console.log('Error code:', normalizedError.code)
}
有两个上游输出,用于在将一个原始错误归为正则之前对其进行分类:
errors.isContextDestroyed(rawError) // frame torn down mid-flight — transient
errors.isPageRangeOvershoot(rawError) // range starts past the last page — deterministic
错误属性
全体 BrowserlessError 实例包括:
| 财产 | 说明 |
|---|---|
name | 永远 'BrowserlessError' |
code | 独特的错误代码(例如, EBRWSRTIMEOUT(中文(简体) ) |
message | 人类可读错误消息前缀代码 |
如何适合在单体
这是一个 基础公用事业软件包 在整个无浏览器生态系统中使用:
| 消费者 | 目的 |
|---|---|
browserless (核心数) | 以超时错误环绕操作, 常态化捕获错误 |
@browserless/goto | 处理导航和协议错误 |
@browserless/screenshot | 处理截图抓取错误 |
@browserless/pdf | 处理 PDF 生成错误 |
依赖关系
| 软件包 | 目的 |
|---|---|
whoops | 用代码创建打入错误时出错工厂 |
ensure-error | 确保值是合适的出错实例 |
serialize-error | 调试日志的序列化错误 |
debug-logfmt | 结构化调试日志 |
许可证
@ 浏览器无/ errors © 微链接,在 麻省理工学院 执照.
作者和维护者 微链接 由来自 捐助者。 。 。 .
微链接.io • GitHub 软件 微链克 • X @microlinkhq (英语)