Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Why is this.path set to undefined instead of path? #122

Open
IamLizu opened this issue Sep 25, 2024 · 2 comments · May be fixed by #123
Open

Why is this.path set to undefined instead of path? #122

IamLizu opened this issue Sep 25, 2024 · 2 comments · May be fixed by #123

Comments

@IamLizu
Copy link
Member

IamLizu commented Sep 25, 2024

Can someone please help me understand why this.path is set to undefined?

this.path = undefined

I had checked the router Layer, and the path was undefined in almost every route, that shouldn't be the case, right?

While I don't know the reason of it being set to undefined initially, I can suggest it should be set to path. I have noticed that the path on Layer is no longer undefined if we set,

this.path = path;

Instead, it gets correct path such as /users or whatever the path actually is.

@IamLizu IamLizu linked a pull request Sep 25, 2024 that will close this issue
@IamLizu
Copy link
Member Author

IamLizu commented Sep 25, 2024

Related expressjs/express#5961

@carpasse
Copy link
Contributor

It seems that this.path is being set to undefined because we can't determine what path the Layer is matched against until runtime.

Let me explain my thought process: Layers are added to the Router instance when the use and route methods are executed.

The Router.prototype.run method only accepts a string as path, but Router.prototype.use can accept either a string or an array of strings. You can refer to the Express documentation for more details.

We can't know which of the possible path values was matched until the layer is actually matched at runtime, as seen here.

To address the issue discussed in express#5961, perhaps we could add an extra property to the Layer instance, such as paths or pathPatterns. This would make it possible to list all routes or a router.

@pillarjs/express-tc, can we get your input on this matter?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants