express e js форма отправки неопределенного значения - PullRequest
0 голосов
/ 02 августа 2020

Я знаю, что это может быть глупый вопрос, но я не могу его решить. Я пытаюсь создать сокращенный URL с помощью Node, Express и E js. Но моя форма e js отправляет неопределенные значения.

Вот мой e js:

<div>
<h2>Hello World!</h2>
<form action="/api/redirect" method="POST">
    <label>Enter Url Please</label>
    <input type="text" name="url" id="" value="<%= url.url %> ">
    <button type="submit">Redirect</button>
</form>

, а это мой маршрутизатор:

const express = require('express');
const URLs = require('../models/urls')
const router = express.Router();
router.get('/',  (req,res) =>{
res.render("index", {url: new URLs()})  
})

router.post('/redirect', (req,res) =>{
let url = req.body.url
console.log(`Value passed = ${url}`)
res.redirect(`http//${url}`)
})
module.exports = router;

эти это ошибки, которые я получаю:

Chrome Error

Ошибка терминала

Любая помощь была бы замечательной, Спасибо! c:

1 Ответ

1 голос
/ 02 августа 2020

Я предполагаю, что ваша переменная url - undefined. Это вызывает сообщение об ошибке, которое вы видите в своем браузере. Это может быть потому, что req.body.url не определен. В свою очередь, это могло иметь ряд причин. Возможно, вы ищете поле url не на том объекте. Или, может быть, вам не хватает какого-то пакета, который сделает поле доступным в первую очередь, например body-parser .

Кроме того, в протоколе отсутствует двоеточие: it нужно сказать http://${url} вместо http//${url}.

Наконец, похоже, что вы хотите перенаправить на какой-то URL-адрес, а не отображать шаблон, и в этом случае вы, вероятно, вызовете res.redirect или аналогичный вместо res.render (я забыл точные спецификации Express -API).

Вся строка должна выглядеть примерно так:

res.redirect(`http://${url}`)
...