浏览代码

Merge pull request #1313 from ealmloff/log-server-errors

Return more useful messages when a server function errors
Jonathan Kelley 1 年之前
父节点
当前提交
d3775bb82e
共有 2 个文件被更改,包括 13 次插入3 次删除
  1. 2 2
      packages/fullstack/src/adapters/axum_adapter.rs
  2. 11 1
      packages/fullstack/src/adapters/warp_adapter.rs

+ 2 - 2
packages/fullstack/src/adapters/axum_adapter.rs

@@ -263,8 +263,8 @@ where
                     let res = service.run(req);
                     match res.await {
                         Ok(res) => Ok::<_, std::convert::Infallible>(res.map(|b| b.into())),
-                        Err(_e) => {
-                            let mut res = Response::new(Body::empty());
+                        Err(e) => {
+                            let mut res = Response::new(Body::from(e.to_string()));
                             *res.status_mut() = StatusCode::INTERNAL_SERVER_ERROR;
                             Ok(res)
                         }

+ 11 - 1
packages/fullstack/src/adapters/warp_adapter.rs

@@ -143,7 +143,17 @@ pub fn register_server_fns(server_fn_route: &'static str) -> BoxedFilter<(impl R
                     let req = warp::hyper::Request::from_parts(parts, bytes.into());
                     service.run(req).await.map_err(|err| {
                         tracing::error!("Server function error: {}", err);
-                        warp::reject::reject()
+                      
+                        struct WarpServerFnError(String);
+                        impl std::fmt::Debug for WarpServerFnError {
+                            fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+                                write!(f, "{}", self.0)
+                            }
+                        }
+
+                        impl warp::reject::Reject for WarpServerFnError {}
+                      
+                        warp::reject::custom(WarpServerFnError(err.to_string()))
                     })
                 }
             })