Что стоит за этой странной проблемой, когда экспресс-маршрут не работает с одним именем маршрута и работает с другим?

У меня возникла странная проблема: если я пишу один маршрут, он перенаправляет на мою домашнюю страницу по причинам, не зависящим от меня. Но если я изменю хотя бы одну букву в маршруте, все будет работать идеально.

Кажется, если я пишу именно это, с «записями» в конце, при переходе по этой ссылке меня просто перенаправляют, независимо от содержимого маршрута. Следующее не работает (приводит к немедленному перенаправлению, по-видимому, вообще никогда не обращается к маршруту):

router.get('/:username/curatas/:curataId/entries', function(req, res) {
// some code that works.
})

Однако, когда я использую абсолютно любой другой выбор букв, это работает! Например, опускание «s» в «записях» или добавление «x» и т. д.

router.get('/:username/curatas/:curataId/entrie', function(req, res) {
// some code that works.
})

В чем может быть причина такого странного поведения? Я тоже не обнаружил никакой ошибки.

Что именно означает «не работает»? Происходит ли что-нибудь? Вы получаете ошибки?

Pointy 05.06.2019 14:17

@Pointy, всякий раз, когда я пытаюсь получить к нему доступ, меня перенаправляют на домашнюю страницу. Нет ошибок. Я пытался настроить ошибки внутри маршрута, но, похоже, он даже не попадает внутрь маршрута. А в остальном приложение продолжает работать в обычном режиме.

danefondo 05.06.2019 14:21

Возможно ли, что этот шаблон пути сталкивается с каким-то другим путем в приложении?

Pointy 05.06.2019 14:22

Искал через приложение искал другие такие пути, не нашел. Действительно странно.

danefondo 05.06.2019 14:23

Кажется, как говорит @Pointy, этот путь был определен в другом месте и выполняет перенаправление. Вы абсолютно уверены, что он не дублируется, учитывая, что параметры с ':' могут быть совершенно разными (например, '/:whatever/curatas/:whatever/entries')?

virgiliogm 05.06.2019 14:39

Используете ли вы какое-либо промежуточное ПО, которое может перенаправлять, прежде чем перейти к определенному маршруту?

fedesc 05.06.2019 14:40

@VirgilioGM, проверил, такого случая тоже нет. И никакого промежуточного ПО.

danefondo 05.06.2019 14:44

Перенаправление должно быть где-то установлено, поэтому вам придется отлаживать код, пока вы не найдете где.

virgiliogm 05.06.2019 14:46

Ах! Оказалось, что это работает в Safari! Затем очистил весь кеш в Chrome, и теперь он работает и там. Таким образом, проблема была в кеше, хотя это и странно, так как ранее это не было проблемой ни для каких маршрутов.

danefondo 05.06.2019 14:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
9
100
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема оказалась в кеше.

Я никогда раньше не сталкивался с этим ни с какими маршрутами и не ожидал проблем с кешем в бэкэнд-коде.

Так что для тех, кто сталкивается с похожей проблемой, когда текущий код, кажется, не имеет проблем, но вы столкнулись со странным, неожиданным поведением без ошибок...

Тогда ваша проблема может быть в кеше. Попробуйте в другом браузере или почистите кеш.

С помощью инструментов разработчика Chrome вы можете отключить кеширование на вкладке сети.

slebetman 05.06.2019 16:26

@slebetman, у вас есть идеи, почему в данном случае это превратилось в проблему с кешем, но обычно такого не возникает? Просто аномалия, или есть что-то особенное, на что нужно обратить внимание? Также спасибо за подсказку!

danefondo 05.06.2019 17:12

Он всегда был там, но вы просто никогда не замечали. Для неиндемпотентных конечных точек (таких как маршруты, генерирующие JSON, которые генерируют изменяющиеся во времени данные) я всегда устанавливаю заголовок Cache-Control для отключения кеша, но это снижает производительность, поэтому не делайте этого для всего.

slebetman 06.06.2019 00:28

Другие вопросы по теме