actix_web_nextjs/
error.rs1use std::io;
2
3use actix_web::ResponseError;
4use tracing::error;
5
6#[derive(thiserror::Error, Debug)]
8pub enum SpaError {
9 #[error("File system error: {0}")]
10 FileSystemError(#[from] io::Error),
11 #[error("Failed to serve file: {0}")]
12 ServeFileError(#[from] actix_web::Error),
13 #[error("Build manifest not found")]
14 BuildManifestNotFound,
15 #[error("Path conversion error")]
16 PathConversionError,
17 #[error("Glob pattern error: {0}")]
18 GlobPatternError(#[from] glob::PatternError),
19}
20
21impl ResponseError for SpaError {}
22
23impl From<anyhow::Error> for SpaError {
24 fn from(error: anyhow::Error) -> Self {
25 error!("An unexpected error occurred: {:?}", error);
26 SpaError::ServeFileError(actix_web::Error::from(Box::<dyn std::error::Error>::from(error)))
27 }
28}