Javascript NodeJS-ejs:如何在登录/注册表单上运行密码检查

Javascript NodeJS-ejs:如何在登录/注册表单上运行密码检查,javascript,node.js,reactjs,express,ejs,Javascript,Node.js,Reactjs,Express,Ejs,我创建了一个登录页面作为一个小例子。 表单会询问用户名、密码等常见问题,还会要求用户确认密码,如果长度不同,则会抛出一个错误,警告用户存在差异 如果我输入正确的密码和确认密码长度 如果password与confirm password不相等,则不工作,错误如下: 错误:无法在视图目录中查找视图“/注册” “/home/emanuele/Desktop/cashman tracker仪表板/视图” 位于Function.render(/home/emanuele/Desktop/cashman t

我创建了一个登录页面作为一个小例子。 表单会询问用户名、密码等常见问题,还会要求用户确认密码,如果长度不同,则会抛出一个错误,警告用户存在差异

如果我输入正确的
密码
确认密码
长度

如果
password
confirm password
不相等,则不工作,错误如下:

错误:无法在视图目录中查找视图“/注册” “/home/emanuele/Desktop/cashman tracker仪表板/视图” 位于Function.render(/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/application.js:580:17) 在ServerResponse.render(/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/response.js:1012:7) 在ServerResponse.res.render(/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express ejs layouts/lib/express layouts.js:77:18) at/home/emanuele/Desktop/cashman tracker仪表板/routes/users.js:30:7 在Layer.handle[作为handle_请求](/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/Layer.js:95:5) 下一步(/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/route.js:137:13) 在Route.dispatch(/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/Route.js:112:3) 在Layer.handle[作为handle_请求](/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/Layer.js:95:5) at/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/index.js:281:22 在Function.process_参数(/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/index.js:335:12) 下一步(/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/index.js:275:10) 位于Function.handle(/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/index.js:174:3) 在路由器上(/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/index.js:47:12) 在Layer.handle[作为handle_请求](/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/Layer.js:95:5) 在trim_前缀(/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/index.js:317:13) at/home/emanuele/Desktop/cashman tracker dashboard/node_modules/express/lib/router/index.js:284:7

以下是带有相关检查的代码:

users.js

const express = require('express');
const router = express.Router();

// Login Page
router.get('/login', (req, res) => res.render('login'));
// Register Page
router.get('/register', (req, res) => res.render('register'));

// Register Handle
router.post('/register', (req, res) => {
    const { name, email, password, password2 } = req.body;
    let errors = [];

    // Check required fields
    if (!name || !email || !password || !password2) {
        errors.push({ msg: 'Please fill in all fields' });
    }
    // Check password
    if (password !== password2) {
        errors.push({ msg: 'Passwords do not match' });
    }
    // Check password length
    if (password.length < 6) {
        errors.push({ msg: 'Password should be at least 6 characters' });
    }
    if (errors.length > 0) {
        res.render('register', {
            errors,
            name,
            email,
            password,
            password2
        });
    } else {
        res.send('pass');
    }
});

module.exports = router;
<div class="row mt-5">
    <div class="col-md-6 m-auto">
        <div class="card card-body">
            <h1 class="text-center mb-3"><i class="fas fa-user-plus"></i>Register</h1>
            <% include ./partials/messages %> //<-- This seems to be the cause of error
            <form action="/users/register" method="POST">
                <div class="form-group">
                    <label for="name">Name</label>
                    <input
                    type="name"
                    id="name"
                    name="name"
                    class="form-control"
                    placeholder="Enter Name"
                    value="<%= typeof name != 'undefined' ? name : '' %>" 
                    />
                </div>

                <div class="form-group">
                    <label for="email">Email</label>
                    <input
                    type="email"
                    id="email"
                    name="email"
                    class="form-control"
                    placeholder="Enter Email"
                    value="<%= typeof email != 'undefined' ? email : '' %>"
                    />
                </div>

                <div class="form-group">
                    <label for="password">Password</label>
                    <input
                    type="password"
                    id="password"
                    name="password"
                    class="form-control"
                    placeholder="Create Pasword"
                    value="<%= typeof email != 'undefined' ? password : '' %>"
                    />
                </div>

                <div class="form-group">
                    <label for="password2">Confirm Password</label>
                    <input
                    type="password"
                    id="password2"
                    name="password2"
                    class="form-control"
                    placeholder="Confirm Pasword"
                    value="<%= typeof email != 'undefined' ? password2 : '' %>"
                />
                </div>
                <button type="submit" class="btn btn-primary btn-block">Login</button>
            </form>
            <p class="lead mt-4">Have An Account? <a href="/users/login">Login</a></p>
        </div>
    </div>
</div>
<% if(typeof errors != 'undefined'){ %> 
    <% errors.forEach(function(error) { %>
      <%= error.msg %>
    <% }); %> 
<% } %>
const express=require('express');
const router=express.router();
//登录页面
router.get('/login',(req,res)=>res.render('login');
//注册页
router.get('/register',(req,res)=>res.render('register');
//寄存器句柄
路由器.post('/register',(req,res)=>{
const{name,email,password2}=req.body;
让错误=[];
//检查必填字段
如果(!name | | |!email | |!password | |!password2){
错误。推送({msg:'请填写所有字段'});
}
//检查密码
如果(密码!==密码2){
错误。推送({msg:'密码不匹配'});
}
//检查密码长度
如果(密码长度<6){
错误。推送({msg:'密码至少应为6个字符');
}
如果(errors.length>0){
res.render('寄存器'{
错误,
名称
电子邮件
暗语
密码2
});
}否则{
res.send('pass');
}
});
module.exports=路由器;
register.ejs

const express = require('express');
const router = express.Router();

// Login Page
router.get('/login', (req, res) => res.render('login'));
// Register Page
router.get('/register', (req, res) => res.render('register'));

// Register Handle
router.post('/register', (req, res) => {
    const { name, email, password, password2 } = req.body;
    let errors = [];

    // Check required fields
    if (!name || !email || !password || !password2) {
        errors.push({ msg: 'Please fill in all fields' });
    }
    // Check password
    if (password !== password2) {
        errors.push({ msg: 'Passwords do not match' });
    }
    // Check password length
    if (password.length < 6) {
        errors.push({ msg: 'Password should be at least 6 characters' });
    }
    if (errors.length > 0) {
        res.render('register', {
            errors,
            name,
            email,
            password,
            password2
        });
    } else {
        res.send('pass');
    }
});

module.exports = router;
<div class="row mt-5">
    <div class="col-md-6 m-auto">
        <div class="card card-body">
            <h1 class="text-center mb-3"><i class="fas fa-user-plus"></i>Register</h1>
            <% include ./partials/messages %> //<-- This seems to be the cause of error
            <form action="/users/register" method="POST">
                <div class="form-group">
                    <label for="name">Name</label>
                    <input
                    type="name"
                    id="name"
                    name="name"
                    class="form-control"
                    placeholder="Enter Name"
                    value="<%= typeof name != 'undefined' ? name : '' %>" 
                    />
                </div>

                <div class="form-group">
                    <label for="email">Email</label>
                    <input
                    type="email"
                    id="email"
                    name="email"
                    class="form-control"
                    placeholder="Enter Email"
                    value="<%= typeof email != 'undefined' ? email : '' %>"
                    />
                </div>

                <div class="form-group">
                    <label for="password">Password</label>
                    <input
                    type="password"
                    id="password"
                    name="password"
                    class="form-control"
                    placeholder="Create Pasword"
                    value="<%= typeof email != 'undefined' ? password : '' %>"
                    />
                </div>

                <div class="form-group">
                    <label for="password2">Confirm Password</label>
                    <input
                    type="password"
                    id="password2"
                    name="password2"
                    class="form-control"
                    placeholder="Confirm Pasword"
                    value="<%= typeof email != 'undefined' ? password2 : '' %>"
                />
                </div>
                <button type="submit" class="btn btn-primary btn-block">Login</button>
            </form>
            <p class="lead mt-4">Have An Account? <a href="/users/login">Login</a></p>
        </div>
    </div>
</div>
<% if(typeof errors != 'undefined'){ %> 
    <% errors.forEach(function(error) { %>
      <%= error.msg %>
    <% }); %> 
<% } %>

登记
//
电子邮件
暗语
确认密码
登录

有账户吗

消息。ejs

const express = require('express');
const router = express.Router();

// Login Page
router.get('/login', (req, res) => res.render('login'));
// Register Page
router.get('/register', (req, res) => res.render('register'));

// Register Handle
router.post('/register', (req, res) => {
    const { name, email, password, password2 } = req.body;
    let errors = [];

    // Check required fields
    if (!name || !email || !password || !password2) {
        errors.push({ msg: 'Please fill in all fields' });
    }
    // Check password
    if (password !== password2) {
        errors.push({ msg: 'Passwords do not match' });
    }
    // Check password length
    if (password.length < 6) {
        errors.push({ msg: 'Password should be at least 6 characters' });
    }
    if (errors.length > 0) {
        res.render('register', {
            errors,
            name,
            email,
            password,
            password2
        });
    } else {
        res.send('pass');
    }
});

module.exports = router;
<div class="row mt-5">
    <div class="col-md-6 m-auto">
        <div class="card card-body">
            <h1 class="text-center mb-3"><i class="fas fa-user-plus"></i>Register</h1>
            <% include ./partials/messages %> //<-- This seems to be the cause of error
            <form action="/users/register" method="POST">
                <div class="form-group">
                    <label for="name">Name</label>
                    <input
                    type="name"
                    id="name"
                    name="name"
                    class="form-control"
                    placeholder="Enter Name"
                    value="<%= typeof name != 'undefined' ? name : '' %>" 
                    />
                </div>

                <div class="form-group">
                    <label for="email">Email</label>
                    <input
                    type="email"
                    id="email"
                    name="email"
                    class="form-control"
                    placeholder="Enter Email"
                    value="<%= typeof email != 'undefined' ? email : '' %>"
                    />
                </div>

                <div class="form-group">
                    <label for="password">Password</label>
                    <input
                    type="password"
                    id="password"
                    name="password"
                    class="form-control"
                    placeholder="Create Pasword"
                    value="<%= typeof email != 'undefined' ? password : '' %>"
                    />
                </div>

                <div class="form-group">
                    <label for="password2">Confirm Password</label>
                    <input
                    type="password"
                    id="password2"
                    name="password2"
                    class="form-control"
                    placeholder="Confirm Pasword"
                    value="<%= typeof email != 'undefined' ? password2 : '' %>"
                />
                </div>
                <button type="submit" class="btn btn-primary btn-block">Login</button>
            </form>
            <p class="lead mt-4">Have An Account? <a href="/users/login">Login</a></p>
        </div>
    </div>
</div>
<% if(typeof errors != 'undefined'){ %> 
    <% errors.forEach(function(error) { %>
      <%= error.msg %>
    <% }); %> 
<% } %>

如果有用,我还将附加项目树的打印屏幕:

问题似乎是下面在register.ejs中的陈述,但我不知道

        <% include ./partials/messages %>

我不知道消息.ejs是否也与错误有关

到目前为止我所做的:

我查看了不同的来源,这就是我使用的来源。我反复检查了很多次,但错误仍然存在,当我输入长度为X的密码并确认长度为X+1的密码时,我就出现了那个奇怪的错误

我不确定错误是否与messages.ejs或语句
有关,或者是否与其他内容有关


感谢您为我指出了解决此问题的正确方向。

我一直在尝试您的代码,它工作正常,唯一一行不工作的是:


您必须使用以下代码更改此行:


我希望它能帮助你