#6711Restore Support for app.all('*') Wildcard in Express v5

TanmayshiTanmayshi
opened 2 months ago
Author

❗ Description:

In Express v5.1.0, routes using app.all('*') (or similar wildcard syntax) fail with:

Error 👹: throw new TypeError(Missing parameter name at ${i}: ${DEBUG_URL});

This change comes from stricter path-to-regexp parsing rules. In Express v4, the following code worked fine:

app.all('*', (req, res) => res.send('Not Found'));

But in Express v5, developers are forced to write:

app.all('/*splat', (req, res) => res.send('Not Found')); // or app.all('/{*splat}', (req, res) => res.send('Not Found'));

This breaks a very common catch-all route pattern used widely in v4 projects.

🔍 Root Cause

1.Express v5 migrated to a stricter version of path-to-regexp.

2.Unnamed wildcards (*) are no longer allowed.

3.Developers must now explicitly name the wildcard parameter.

✅ Expected Behavior

Express v5 should either:

Gracefully support app.all('*') as a valid catch-all syntax (to maintain backward compatibility).

Or, if strict syntax is required:

Provide a clearer error message explaining the new requirement.

Update docs & migration guide to emphasize the change prominently.

📌 Suggested Fixes

Restore legacy * wildcard syntax support (backward compatibility).

Or provide an explicit alternative (e.g. app.all('/*')) documented as the replacement.

Improve error messaging in path-to-regexp.

🔗 Related Issue

This request builds upon Issue #6664 where the problem was first reported. Maintainers clarified that this is not a bug but an intentional change — hence this formal feature request.