express
express copied to clipboard
Error `cause` is not displayed
package.json
:
{
"dependencies": {
"express": "^4.19.2"
}
}
server.js
:
const express = require("express");
const app = express();
app.get("/", (req, res) => {
throw new Error("foo", {
cause: new Error("bar"),
});
});
app.listen(3000, () => {
console.log("Server is running on port 3000");
});
$ node server.js
Server is running on port 3000
$ curl "localhost:3000"
Actual
The error cause
is not displayed.
Error: foo
at /Users/oliver/Code/reduced-test-cases/express-error-cause/server.js:6:9
at Layer.handle [as handle_request] (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/route.js:149:13)
at Route.dispatch (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/route.js:119:3)
at Layer.handle [as handle_request] (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/layer.js:95:5)
at /Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/index.js:284:15
at Function.process_params (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/index.js:346:12)
at next (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/index.js:280:10)
at expressInit (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/middleware/init.js:40:5)
at Layer.handle [as handle_request] (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/layer.js:95:5)
Expected
The error cause
should be displayed, like it is for exceptions occurring outside of request handlers.
Error: foo
at /Users/oliver/Code/reduced-test-cases/express-error-cause/server.js:6:9
at Layer.handle [as handle_request] (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/layer.js:95:5)
... 7 lines matching cause stack trace ...
at Layer.handle [as handle_request] (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/layer.js:95:5) {
[cause]: Error: bar
at /Users/oliver/Code/reduced-test-cases/express-error-cause/server.js:7:12
at Layer.handle [as handle_request] (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/route.js:149:13)
at Route.dispatch (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/route.js:119:3)
at Layer.handle [as handle_request] (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/layer.js:95:5)
at /Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/index.js:284:15
at Function.process_params (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/index.js:346:12)
at next (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/index.js:280:10)
at expressInit (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/middleware/init.js:40:5)
at Layer.handle [as handle_request] (/Users/oliver/Code/reduced-test-cases/express-error-cause/node_modules/express/lib/router/layer.js:95:5)
}
Hey @OliverJAsh, thanks for the report. The specification for error causes is comparatively new to the code which handles this and the error stack is what we use for displaying this. I do agree though that showing error causes for development logging would be an awesome improvement. Feel free to open a PR for this one.
Hii @OliverJAsh thanks for the report. can you able to compile this enhancement?
hey, i want to contribute to this enhancement. there is any way to connect this issue to me?
Hey @DanielBelz1997, we would love a PR for this. The stack trace behavior comes from finalhandler
here, that is the best place to start if you would like to work on this.
thanks for the quick reply! i will get right into it
fixed the issue. but the code is in the finalHandler package. how should i do a PR on this?
Open a PR to finalhandler
and mention this issue in the description of the PR.
I created a small reproduction/test for this 👀 https://github.com/coltonehrman/bag-of-tools/blob/main/examples/express/error-stack-trace/error.test.ts
I have a review out on both of these PRs. Whoever gets theirs into a fixed up state I will merge and publish. Closing this to track work on this in the respective PRs.