【问题标题】:Node Express Post 500 (Internal Server Error) jquery-3.4.1.min.jsNode Express Post 500(内部服务器错误)jquery-3.4.1.min.js
【发布时间】:2020-03-03 09:29:09
【问题描述】:

我已经在 node js/express js 应用程序上工作了一段时间了。我有来自 jquery $ajax 调用的 get 和 post。

由于某种原因,我有一个帖子“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");
});

这条路线 Post 有效:

router.post('/',function(req,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 路由并输出“in user login” 这是发布登录表单时的控制台输出:

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 错误。

任何帮助将不胜感激。

【问题讨论】:

    标签: node.js express post http-status-code-500


    【解决方案1】:

    我认为你应该尝试以下方法:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 2018-01-06
      相关资源
      最近更新 更多