类型错误:JSON.stringify(...).then不是函数- React JS

qnzebej0  于 2022-11-19  发布在  React
关注(0)|答案(4)|浏览(133)

我正在尝试连接我的react应用程序与登录页面的后端。我正在使用一个承诺返回一个成功消息。
login.js

onSubmitSignIn = () => {
        fetch('http://localhost:5000/', {
              method : 'post',
              headers :{ 'Content-Type' : 'application/json'},
              body : JSON.stringify({
                   userId : this.state.userId,
                   password : this.state.password
             }).then(response => response.json())
               .then(data => {
                    if(data === 'success'){
                            this.props.onRouteChange('home');
                    }
             })
        })
    }

后端代码-

exports.findById = (req) => {
         return new Promise((resolve) => {
               var sql = "Select * from users where userid = '" + req.body.userId + "' ;";
               connection.query(sql,req,  function (error, results, fields) {
                    var data = JSON.parse(JSON.stringify(results)); 
                    var valid = false; 
                    if( data.length !=0 && req.body.userId === data[0].userid && req.body.password === data[0].password)
                         valid = true; 

                    if(valid) {
                         resolve({message : "success"});
                    }else{
                         reject({ message :"fail"});
                    }
              });
        })
  };

单击“登录”按钮后,出现错误**“TypeError:字符串化(...).then不是函数”**
我尝试了一些解决方案,从类似的问题,它不工作,在我的情况下。

enyaitl3

enyaitl31#

then应该在fetch之外

fetch('http://localhost:5000/', {
    method : 'post',
    headers :{ 'Content-Type' : 'application/json'},
    body : JSON.stringify({
         userId : this.state.userId,
         password : this.state.password
   })
}).then(response => response.json())
  .then(data => {
    if(data === 'success'){
            this.props.onRouteChange('home');
    }
})
brjng4g3

brjng4g32#

您有一个排印错误,.then应该在fetch上,而不是在JSON.stringify上。

onSubmitSignIn = () => {
  fetch("http://localhost:5000/", {
    method: "post",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      userId: this.state.userId,
      password: this.state.password
    })
  })
//-^
    .then(response => response.json())
    .then(data => {
      if (data === "success") {
        this.props.onRouteChange("home");
      }
    });
};
lstz6jyr

lstz6jyr3#

你丢失了一个方括号。2在JSON.stringify()后面应该有一个右方括号。

onSubmitSignIn = () => {
  fetch('http://localhost:5000/', {
    method: 'post',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      userId: this.state.userId,
      password: this.state.password
    })
  }).then(response => response.json())
    .then((data) => {
      if (data === 'success') {
        this.props.onRouteChange('home');
      }
    });
};
cfh9epnr

cfh9epnr4#

我也遇到过这个问题。请检查并确认您没有在应用程序中导入或需要{JSON}。它很可能是指导入的JSON,而不是全局

相关问题