表达 ejs 形式发送未定义的值

express ejs form sending undefined value

我知道这可能是个愚蠢的问题,但我似乎无法解决这个问题。我正在尝试使用 Node、Express 和 Ejs 创建一个 url-shortner。但是我的 ejs 表单正在发送未定义的值。

这是我的 ejs:

<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;

这些是我遇到的错误:

任何帮助都会很棒,谢谢! c:

我猜你的 url 变量是 undefined。这会导致您在浏览器中看到错误消息。可能是因为 req.body.url 没有定义。这可能有很多原因。也许您在错误的对象上查找 url 字段。或者您可能缺少一些首先使该字段可用的包,例如 body-parser.

此外,您在协议中缺少一个冒号:它需要说 http://${url} 而不是 http//${url}.

最后,您似乎想要 重定向 到某些 URL,而不是呈现模板,在这种情况下您可能会调用 res.redirect 或一些等价物而不是 res.render (我忘记了确切的 Express-API 规格)。

整行应该类似于:

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