Node Express Post 500(内部服务器错误)jquery-3.4.1.min.js

我已经从事Node js / express js应用程序一段时间了。我有从jQuery $ ajax调用中获取和发布的信息。

由于某种原因,我有一个“ loginUser”帖子没有进入用户路线发布方法

此操作以前一直有效,但现在已停止,并且正如任何程序员都会说的“由于某种原因已停止工作”。

我不相信任何改变。我尝试使用GET的名称,新POST的名称等。

每次它只提供500个错误,而错误对象中没有任何信息。

Loginpage.ejs表单:

<form class="form-horizontal" id="loginUserForm" >

                    <div class="controls">

                      <strong>Email</strong><br/><input type="email" class="form-control custom-input-width" id="login-email" value="adrian@adriannadeau.com" required>

                  </div>
                  <div class="controls">

                      <strong>Password</strong><br/><input type="password" class="form-control custom-input-width" minlength="6" id="login-password" value="Asialouie!123" required>

                  </div>

                    <div class="control-group">
                  <div class="controls text-center">
                      <br/>
                      <input type="submit" class="btn btn-green" id="button-signup" value="Sign in">

                      <br/><p class="aligncenter"><br/>
                  Don't have an account? <a href="/register" >Sign up</a>
                  <br/>Forgot password? <a href="/sendRestForm">Reset</a>
                </p>


                </div>
          </form>

jQuery Ajax代码:

 $("#loginUserForm").submit(function(event) {
       // Prevent the form from submitting via the browser.
     event.preventDefault();
    try{
        const email = $("#login-email").val();
        const password = $("#login-password").val();
        console.log("email: "+email);
        console.log("pass: "+password);
        var data = {};
            data.email =email;
            data.message =password;

        $.ajax({
                url: '/users/loginUser',type: 'POST',data: JSON.stringify(data),contentType: 'application/json',/**
                * A function to be called if the request succeeds.
                */
                success: function(data,textStatus,jqXHR) {


                    window.location.assign("/profile/?id="+data._id);
                },error : function(error) {
                    //alert(error.name + ': ' + error.message);
                    console.log(error);
                    $(".alert-signin").show();
                }
        });
       }
       catch(err) {
        console.log("err: "+err.message);
      }


});

用户路由方法:

router.post('/loginUser',function(req,res) {
  console.log("in user login");
});

此路线发布有效:

router.post('/',res){
    logger.info("email: "+req.body.email);
    User.findOne({ email:req.body.email},function (error,user) {
        if(user){
            console.log("user exists");
            const error = new Error('User email account already exists.');
            res.status(410);
            res.send(JSON.stringify(error.message));

        }
        else{
          //save user  

          var pwd = req.body.password;

          bcrypt.genSalt(10,function(err,salt) {
              if (err) {
                logger.error("BCrype issue");
                const error = new Error("Unable to register,please try again.");
                //throw new Error('User email account already exists.');
                res.status(420);
                res.send(JSON.stringify(error.message));

              } else {
                  //console.log('Salt: ' + salt);
                  bcrypt.hash(pwd,salt,function (err,hash) {
                      if (err) {
                        logger.error("ERROR! users bcrypt");
                        const error = new Error("Unable to register,please try again.");

                        res.status(420);
                        res.send(JSON.stringify(error.message));
                      } else {

                        var user = new User({

                          firstname:req.body.firstname,lastname :req.body.lastname,email :req.body.email,password : hash,public:1,admin: false,bio : "",location : "",avatar: "",url: "",activated:"n"
                        });
                          user.save(function (error,user) {
                              if (error){ 

                                res.send(error.message);


                              }

                              res.send(user)
                          });    
                        }
                  });
              }
          });

    }

  });
 });   

我希望路由获取登录信息并进入LoginUser路由并输出“用户登录” 这是发布登录表单时的控制台输出:

POST http://localhost:3000/users/loginUser 500 (Internal Server Error) jquery-3.4.1.min.js:2

我不明白为什么它在控制台中显示jquery-3.4.1.min.js:2来显示500错误。

任何帮助将不胜感激。

qingabc 回答:Node Express Post 500(内部服务器错误)jquery-3.4.1.min.js

我认为您应该尝试以下操作:

  1. 您应将 method 属性放在 form 标记中
  2. 如果服务器代码中包含以下语句,请删除它或将其注释掉。
app.use(bodyParser.json());
  1. 如果您在用于编写jQuery的脚本标签中具有任何属性,请删除它们。
  2. 什么状态码500通常在服务器端代码(根目录)中有一些错误。仔细检查路线代码。

所有这些建议都是我在遇到500错误时对代码的处理。

本文链接:https://www.f2er.com/3149170.html

大家都在问