libnyanpasu/clash-nyanpasu · critical
error while running tauri application
Error message
error while running tauri application
What it means
builder.build(tauri::generate_context!()) constructs the Tauri application; any error there is unwrapped with .expect('error while running tauri application'). This covers failures building the app context — invalid/missing tauri.conf.json values, missing icons/resources, window creation failures, or plugin registration errors.
Source
Thrown at backend/tauri/src/lib.rs:341
log_err!(
crate::ipc::SchemeRequestReceivedEvent { url: request }.emit(&handle),
"failed to emit scheme-request-received event"
);
}
));
std::thread::spawn(move || {
nyanpasu_utils::runtime::block_on(async move {
server::run(*server::SERVER_PORT)
.await
.expect("failed to start server");
});
});
Ok(())
});
let app = builder
.build(tauri::generate_context!())
.expect("error while running tauri application");
app.run(|app_handle, e| match e {
tauri::RunEvent::ExitRequested { api, code, .. } if code.is_none() => {
api.prevent_exit();
}
tauri::RunEvent::ExitRequested { .. } => {
utils::help::cleanup_processes(app_handle);
}
tauri::RunEvent::WindowEvent { label, event, .. } if label == "main" => match event {
tauri::WindowEvent::ScaleFactorChanged { scale_factor, .. } => {
core::tray::on_scale_factor_changed(scale_factor);
}
tauri::WindowEvent::CloseRequested { .. } => {
log::debug!(target: "app", "window close requested");
let _ = resolve::save_window_state(app_handle, true);
#[cfg(target_os = "macos")]
crate::utils::dock::macos::hide_dock_icon();
}
tauri::WindowEvent::Destroyed => {View on GitHub (pinned to f7dbce2997)
Solutions
- Validate tauri.conf.json against the current Tauri schema and fix invalid fields
- Ensure the frontend dist output (frontendDist) exists — run the frontend build before cargo build
- Check all icons/resources referenced by the config exist
- Update/align plugin versions with the Tauri version and fix plugin init errors surfaced in the panic chain
Example fix
// diagnose instead of opaque panic
let app = builder.build(tauri::generate_context!())
.unwrap_or_else(|e| {
eprintln!("tauri build failed: {e:?}");
std::process::exit(1);
}); Defensive patterns
Strategy: try-catch
Validate before calling
// before building: verify frontendDist exists and config is loadable
assert!(std::path::Path::new("dist/index.html").exists(), "frontend dist missing"); Try / catch
let app = builder.build(tauri::generate_context!()).unwrap_or_else(|e| {
eprintln!("tauri init failed: {e:?}");
std::process::exit(1);
}); Prevention
- Build the frontend before cargo build so frontendDist is populated
- Keep tauri.conf.json schema in sync with the Tauri version
- Verify icons/resources referenced in config exist in CI
When it happens
Trigger: Invalid tauri.conf.json (bad identifier, missing frontendDist, bad window config); missing icon files referenced by the config; a plugin's initialization failing during build; generate_context embedding failing on this platform.
Common situations: Running a debug build where the frontend dist folder is empty/missing; upgrading Tauri versions with breaking config schema changes; corrupted or missing bundled resources/icons; duplicate plugin registration.
Related errors
- tray not found
- failed to start server
- window not found
- Local socket too many crashes
- update_systray unhandled error
AI-assisted analysis of libnyanpasu/clash-nyanpasu@f7dbce2997 (2026-09-08).
Data as JSON: /api/errors/f1429311559acddc.
Report an issue: GitHub.