You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js注册页面表单校验触发后错误信息无法正常显示问题

问题原因
  • 后端渲染注册页时未将错误数组传递给视图模板,模板侧无法获取到errors变量,判断逻辑不会触发
  • EJS模板中使用了无输出的语法标签,就算拿到错误数据也不会渲染到页面上
修正代码

后端路由代码修改

module.exports.signup_post = (req,res)=>{
  let {firstName,lastName,username,email,password,password2} = req.body;
  console.log(
      firstName,
      lastName ,
      username,
      email,
      password,
      password2
      );

  let errors =[];

  if (!firstName || !lastName || !username || !email || !password || !password2){
      errors.push({message:'请填写所有字段'});
  }
  if (password.length<6){
      errors.push({message:'密码长度至少为6位'})
  }
  if (password!= password2){
      errors.push({message:'两次输入的密码不匹配'})
  }
  if (errors.length > 0){
      // 将errors变量传递给注册页模板
      res.render('register', { errors: errors });
  }else{
      res.render('login')
  }
}

页面模板代码修改

<ul>
  <% if (typeof errors != 'undefined'){ %>
    <% errors.forEach(error =>{ %>
      <!-- 使用<%= 语法输出变量内容 -->
      <li><%= error.message %></li>
    <% }) %>
  <% } %>
</ul>

内容的提问来源于stack exchange,提问作者user16799101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:54:03