Javascript 获取错误“;“未定义标题”;用Express实现EJS模板引擎

Javascript 获取错误“;“未定义标题”;用Express实现EJS模板引擎,javascript,node.js,express,template-engine,ejs,Javascript,Node.js,Express,Template Engine,Ejs,我正在学习NodeJS,我正在使用EJS作为模板引擎。但是,每当我点击我的注册页面上的注册按钮时,我就会得到一个错误,即标题未定义。 这是我的密码 users.js head.ejs header.ejs 切换导航 register.ejs 登记 请使用以下表格注册 名称 电子邮件 用户名 密码 确认密码 轮廓图像 登记 我不明白为什么会这样。我试过了,但没用。任何帮助都将不胜感激 我无法准确理解当请求到达/时,路由器将重定向到哪里 router.get('/', f

我正在学习
NodeJS
,我正在使用
EJS
作为模板引擎。但是,每当我点击我的注册页面上的
注册
按钮时,我就会得到一个错误,即
标题未定义
。 这是我的密码

users.js

head.ejs


header.ejs


切换导航
register.ejs


登记
请使用以下表格注册

名称 电子邮件 用户名 密码 确认密码 轮廓图像 登记

我不明白为什么会这样。我试过了,但没用。任何帮助都将不胜感激

我无法准确理解当请求到达
/
时,路由器将重定向到哪里

router.get('/', function(req, res, next) {
    res.send('respond with a resource');
});
通常,对于
/
,它会重定向到
索引
模板。例如,使用EJS,您可以重定向到模板

router.get('/', function(req, res, next) {
    res.render('index', {param: value});
});
当您的请求点击
/
时,它会重定向到包含
head.ejs
的模板,该模板需要发送
title
参数

在获取的过程中,您正确发送了以下内容:

router.get('/register', function(req, res, next) {
    res.render('register',{
        'title': 'Register'
    });
});
但是,当您的请求到达POST方法时,在所有逻辑之后,您没有重定向到模板,而是将其重定向到
/
,没有参数。如果您的
/
路由使用您的
head.ejs
访问模板,则会出现此错误

在您的情况下,即使重定向到
index.ejs
messageUserAdded.ejs
(例如),我也会使用
render
方法调用它来呈现ejs模板(而不是
res.location('/');
res.redirect('/');
),如下所示:

res.render('index', {title: 'User Successfully Added'});
为了增加一种可能性,你可以为成功的消息创建一个模板,然后你可以向它传递一条消息,根据你做对的每一页进行定制。例如,类似以下内容的模板:

successfulMessage.ejs


希望它能帮助您解决问题。

我无法准确理解当请求到达
/
时,您的路由器将重定向到哪里

router.get('/', function(req, res, next) {
    res.send('respond with a resource');
});
通常,对于
/
,它会重定向到
索引
模板。例如,使用EJS,您可以重定向到模板

router.get('/', function(req, res, next) {
    res.render('index', {param: value});
});
当您的请求点击
/
时,它会重定向到包含
head.ejs
的模板,该模板需要发送
title
参数

在获取的过程中,您正确发送了以下内容:

router.get('/register', function(req, res, next) {
    res.render('register',{
        'title': 'Register'
    });
});
但是,当您的请求到达POST方法时,在所有逻辑之后,您没有重定向到模板,而是将其重定向到
/
,没有参数。如果您的
/
路由使用您的
head.ejs
访问模板,则会出现此错误

在您的情况下,即使重定向到
index.ejs
messageUserAdded.ejs
(例如),我也会使用
render
方法调用它来呈现ejs模板(而不是
res.location('/');
res.redirect('/');
),如下所示:

res.render('index', {title: 'User Successfully Added'});
为了增加一种可能性,你可以为成功的消息创建一个模板,然后你可以向它传递一条消息,根据你做对的每一页进行定制。例如,类似以下内容的模板:

successfulMessage.ejs


希望它能帮助您解决这个问题。

尝试了
res.render
而不是
res.location
,但仍然存在相同的错误您使用res.render('yourTemplate',{title:'your title')了吗?您可以在问题中添加重定向到的模板吗?另外,您是否保留了到/使用res.send('respond with resource')的路由?我放置了
res.render('index',{title:'Members'}
。但仍然得到了相同的错误。尝试了
res.render
而不是
res.location
,但仍然存在相同的错误您使用res.render('yourTemplate',{title:'your title'})?您能在问题中添加重定向到的模板吗?另外,您是否保留了到/with res.send('respond with resource')的路由?我将
res.render('index',{title:'Members')}
。但仍然得到相同的错误。
<html>
    <head><title> <%=title%> </title></head>
<body>
    <h1>This works!</h1>
    <h2> <%=messageTitle%> </h2>
    <span> <%=messageDetails%> </span>
</body>
</html>
// After all the logic
res.render('successfulMessage', { 
    title: 'Success', 
    messageTitle: 'Account Created', 
    messageDetails: 'John has been added to our database!'
})