mirror of
https://github.com/denoland/deno.git
synced 2025-01-21 04:52:26 -05:00
feat(cli/hmr): print compile error with exception details
This commit is contained in:
parent
ce0968ef3a
commit
d9c884da65
2 changed files with 23 additions and 7 deletions
|
@ -291,8 +291,10 @@ pub type UnserializableValue = String;
|
||||||
|
|
||||||
/// <https://chromedevtools.github.io/devtools-protocol/tot/Debugger/#method-setScriptSource>
|
/// <https://chromedevtools.github.io/devtools-protocol/tot/Debugger/#method-setScriptSource>
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct SetScriptSourceResponse {
|
pub struct SetScriptSourceResponse {
|
||||||
pub status: Status,
|
pub status: Status,
|
||||||
|
pub exception_details: Option<ExceptionDetails>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
|
|
@ -19,14 +19,28 @@ use crate::emit::Emitter;
|
||||||
use crate::util::file_watcher::WatcherCommunicator;
|
use crate::util::file_watcher::WatcherCommunicator;
|
||||||
use crate::util::file_watcher::WatcherRestartMode;
|
use crate::util::file_watcher::WatcherRestartMode;
|
||||||
|
|
||||||
fn explain(status: &cdp::Status) -> &'static str {
|
fn explain(
|
||||||
|
status: &cdp::Status,
|
||||||
|
exception_details: &Option<cdp::ExceptionDetails>,
|
||||||
|
) -> String {
|
||||||
match status {
|
match status {
|
||||||
cdp::Status::Ok => "OK",
|
cdp::Status::Ok => "OK".to_string(),
|
||||||
cdp::Status::CompileError => "compile error",
|
cdp::Status::CompileError => {
|
||||||
cdp::Status::BlockedByActiveGenerator => "blocked by active generator",
|
if let Some(details) = exception_details {
|
||||||
cdp::Status::BlockedByActiveFunction => "blocked by active function",
|
let (message, description) = details.get_message_and_description();
|
||||||
|
format!("compile error: {} - {}", message, description)
|
||||||
|
} else {
|
||||||
|
"compile error: No exception details available".to_string()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cdp::Status::BlockedByActiveGenerator => {
|
||||||
|
"blocked by active generator".to_string()
|
||||||
|
}
|
||||||
|
cdp::Status::BlockedByActiveFunction => {
|
||||||
|
"blocked by active function".to_string()
|
||||||
|
}
|
||||||
cdp::Status::BlockedByTopLevelEsModuleChange => {
|
cdp::Status::BlockedByTopLevelEsModuleChange => {
|
||||||
"blocked by top-level ES module change"
|
"blocked by top-level ES module change".to_string()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,7 +168,7 @@ impl crate::worker::HmrRunner for HmrRunner {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.watcher_communicator.print(format!("Failed to reload module {}: {}.", module_url, colors::gray(explain(&result.status))));
|
self.watcher_communicator.print(format!("Failed to reload module {}: {}.", module_url, colors::gray(&explain(&result.status, &result.exception_details))));
|
||||||
if should_retry(&result.status) && tries <= 2 {
|
if should_retry(&result.status) && tries <= 2 {
|
||||||
tries += 1;
|
tries += 1;
|
||||||
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
|
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
|
||||||
|
|
Loading…
Add table
Reference in a new issue