У меня проблема с маршрутом с динамическим параметром GET в Express 4.16 (и узлом 12.1.0): маршрут никогда не выполняется, но только для некоторых значений.
Маршрут, по которому я пытаюсь пройти, следующий:
app.get('/done/:taskid', function(req, res){
Маршрут никогда не подходит для taskid = 0 или taskid = 1, и я просто не могу понять, почему. Прекрасно работает для taskid> 1. На самом деле, каждое значение, кроме 0 или 1, работает (строки, ноль, что угодно ...).
Приложение не падает, я не получаю никакого журнала, но код, связанный с маршрутом, никогда не выполняется, и я просто перенаправлен на
app.get('/', function(req, res){
Я очень новичок в NodeJS, так что это может быть основной ошибкой, но я просто не могу это понять.
Вот полный код моего main.js:
const app = require('express')();
const twig = require('twig');
const bodyparser = require('body-parser');
app.set('views', __dirname + "/views");
app.set('view engine', 'twig');
app.use(bodyparser.urlencoded());
var todolist = [];
app.get('/', function(req, res){
res.setHeader('Content-Type', 'text/html');
res.render('index.html.twig', {todolist: todolist});
});
app.get('/done/:taskid', function(req, res){
console.log(req.params);
});
app.post('/new', function(req, res){
//insert in DB later
todolist.push({
name: req.body.taskName,
done: false
});
res.redirect(301, '/');
});
app.listen(8000);
Я пытаюсь получить к нему доступ по простой ссылке:
<a class="btn btn-sm btn-primary" href="/done/0">Mark as done</a>
Запуск приложения через pm2 или узел ничего не меняет.
Есть ли у кого-нибудь понимание того, как я могу передать в ссылке идентификатор, равный 0 или 1, и успешно сопоставить этот маршрут?
=================
Редактировать: Итак, по-видимому, не было ошибки ... или, по крайней мере, не связанной с сопоставлением URL По какой-то причине запрос был переведен в состояние "зависания" и достаточно долго, чтобы я мог подумать, что он ничего не соответствует (> 1 мин). Что странно, потому что я запускаю это приложение в док-контейнере на моем локальном хосте. У меня открыта только 1 вкладка, и я несколько раз проверял работу приложения и перезапускал его, поэтому я почти уверен, что только 1 клиент делает запрос в мое приложение ...
Я пошел спать вчера, вернулся сегодня утром, тот же код начал работать.
Я серьезно не знаю, что случилось.
=================
Редактировать 2: Провел немного больше испытаний, нашел образец. Проблема кажется относительно хрома.
Код прекрасно работает с Firefox и Safari. Не работает 100% времени с Chrome ... НО, он работает 100% времени с Chrome, если у меня открыта консольная панель ... Как будто ошибка чувствительна и происходит только тогда, когда никто не смотрит ...