Я использую следующее регулярное выражение в части промежуточного программного обеспечения, расположенного в этом файле:
/\/notebook\/\w+\/(?!delete|save|entry)\w+/
Регулярное выражение, насколько я тестировал, работает как положено ( приведенная ниже демонстрация скопирована с консоли):
/\/notebook\/\w+\/(?!delete|save|entry)\w+/.test("/notebook/5e5f8bcf0f3ec87973a7e2a5/5e5f8bcf0f3ec87973a7e2a6?id=5e5f8bcf0f3ec87973a7e2a4")
true
Однако параметры конечной точки не передаются в промежуточное ПО:
console.log app/routes/notebook.ts:71
Params: {} Original URL: /notebook/5e5f8f85562da17d3088ddaa/5e5f8f85562da17d3088ddab?id=5e5f8f85562da17d3088dda9
● Notebook entry can be accessed
Failed: Object {
"detail": "Regex matched path for /notebook/:notebookId/:entryId, but the entry id undefined cannot be found",
"status": 500,
"title": "Serverside error",
"type": "generic-001",
}
319 |
320 | if (res.status !== 200) {
> 321 | fail(res.body);
| ^
322 | }
323 |
324 | expect(res.status).toBe(200);
Строка 321
Я предполагаю, что это потому, что express не связывает запрошенную конечную точку 1017 * с промежуточным программным обеспечением, однако я не уверен относительно того, как это не связано, поскольку промежуточное программное обеспечение выполняется по запросу , и я могу получить все другие переменные в, такие как id в разделе запроса url и originalUrl, но не параметры url.
Как это исправить?