#panic-hook #console #error #panic-message #nodejs #error-message

console_error_panic_hook

wasm32-unknown-unknown提供的恐慌钩子,将恐慌记录到console.error

8个版本

使用旧Rust 2015

0.1.7 2021年10月11日
0.1.6 2019年2月15日
0.1.5 2018年9月6日
0.1.4 2018年8月14日
0.1.1 2018年5月23日

#9 in WebAssembly

Download history 198445/week @ 2024-04-22 191487/week @ 2024-04-29 181165/week @ 2024-05-06 207258/week @ 2024-05-13 211905/week @ 2024-05-20 210454/week @ 2024-05-27 218009/week @ 2024-06-03 208250/week @ 2024-06-10 200177/week @ 2024-06-17 208963/week @ 2024-06-24 185764/week @ 2024-07-01 192833/week @ 2024-07-08 206918/week @ 2024-07-15 219079/week @ 2024-07-22 208041/week @ 2024-07-29 211905/week @ 2024-08-05

857,422 每月下载量
用于 3,979 个Crate(443个直接使用)

Apache-2.0/MIT

510KB

console_error_panic_hook

Build Status

此Crate允许您通过提供恐慌钩子将恐慌消息转发到console.error来在wasm32-unknown-unknown上调试恐慌。

当使用console.error报告错误时,浏览器开发工具和node.js通常会捕获堆栈跟踪,并将其与记录的错误消息一起显示。

如果没有console_error_panic_hook,您将看到类似RuntimeError: Unreachable executed的内容

浏览器: 没有恐慌钩子的控制台

Node: 没有恐慌钩子的Node控制台

安装此恐慌钩子后,您将看到恐慌消息

浏览器: 已设置恐慌钩子的控制台

Node: 已设置恐慌钩子的Node控制台

用法

安装此恐慌钩子有两种方式。

首先,您可以在某个初始化函数中调用std::panic::set_hook来自定义钩子

extern crate console_error_panic_hook;
use std::panic;

fn my_init_function() {
    panic::set_hook(Box::new(console_error_panic_hook::hook));

    // ...
}

或者,在某个常见代码路径上使用set_once来确保只调用一次set_hook。底层使用std::sync::Once

extern crate console_error_panic_hook;

struct MyBigThing;

impl MyBigThing {
    pub fn new() -> MyBigThing {
        console_error_panic_hook::set_once();

        MyBigThing
    }
}

Error.stackTraceLimit

许多浏览器只能捕获堆栈跟踪的前10个帧。在Rust程序中,这可能不够用。要查看更多帧,您可以设置非标准值 Error.stackTraceLimit。更多信息请参见 MDN Web Docsv8 文档

依赖项

~0.7–1.4MB
~28K SLoC