Javascript 我没有';无法从nodejs服务器获取响应。它在向服务器发出请求后显示未定义

Javascript 我没有';无法从nodejs服务器获取响应。它在向服务器发出请求后显示未定义,javascript,node.js,rest,webserver,Javascript,Node.js,Rest,Webserver,我在Firebase和Heroku两个不同的平台上托管了该网站 我对此有一些问题 首先,当我将数据从firebase托管URL发布到Heroku上托管的服务器时,它显示cors错误 然后,在解决cors错误后,无法从服务器获取数据,控制台中显示未定义数据 这是我的服务器端代码,托管在Heroku上 这是我的客户端代码 document.getElementById('send').addEventListener('click',async()=>{ let data

我在Firebase和Heroku两个不同的平台上托管了该网站
我对此有一些问题

  • 首先,当我将数据从firebase托管URL发布到Heroku上托管的服务器时,它显示cors错误
  • 然后,在解决cors错误后,无法从服务器获取数据,控制台中显示未定义数据
    这是我的服务器端代码,托管在Heroku上
  • 这是我的客户端代码

    document.getElementById('send').addEventListener('click',async()=>{
               let data = {lat,lon}
                await fetch('https://demoserver-app.herokuapp.com/',{mode:"no-cors"},{
                method: 'POST', // or 'PUT'
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(data),
               }).then( async (dat) =>{
                 console.log(res.json())
               }).then(res =>{
                   console.log(res)
               })
           })
    
    它是在控制台上给出错误,如 形象

    “网络”选项卡中的标题信息 图像

    我希望我能帮助你, 我看到的一个问题可以产生这种输出 是您的console.log(res)但是.然后引用(dat) 我认为你不需要内部异步。那么(它已经是异步函数了) 试试这个:

    document.getElementById('send').addEventListener('click',async()=>{
    让数据={lat,lon}
    待命https://demoserver-app.herokuapp.com/“,{模式:“无cors”}{
    方法:“POST'、//或“PUT”
    标题:{
    “内容类型”:“应用程序/json”,
    },
    正文:JSON.stringify(数据),
    })。然后(数据=>{
    data.json()
    })。然后(res=>{
    console.log(res)
    })
    
    })
    好的,那么对于服务器端: 1) 您需要对req.body中的数据进行解构,您所做的只是将req.body调整为数据栏。(请参阅我的解决方案) 2) 对于post方法,您需要创建一个目录,而不是在根目录中尝试。 尝试此代码,您将看到所需的响应 服务器:

    app.post('/getmessage',(req,res)=>{
    const{data}=req.body;
    控制台日志(数据);
    res.status(200).json({
    “成功”:“200响应”,
    “res”:“您现在刚刚与服务器通话”
    })
    
    })
    感谢您的回复,我尝试了此操作,但它再次显示类似***未捕获(承诺中)SyntaxError的错误:输入意外结束***并在控制台中显示未定义。请检查这里的演示项目,它似乎与邮递员配合得很好,但仍然无法获取,但仍然,无法解决客户端上的问题。Postman允许使用这种类型的COR,因为它不是浏览器,但有其他选择。请注意:啊,它正在工作,但我在应用程序中没有收到JSON响应。我在服务器端的代码中,```是的,它正在工作,但我在web中没有收到JSON响应。服务器端路由上的我的代码
    routes.get('/',(req,res)=>{res.send(“这是post-request”)})routes.post('/',(req,res)=>{const{data}=req.body;console.log(data);res.status(200).json({“成功”:“200响应”,“res”:“您现在刚刚与服务器交谈”})

    但在控制台中,它们显示的错误与前面相同,另一个响应是,在网络预览选项卡中,实际上我收到了一条消息,该消息写在get router中,上面写着get RouterMabe,因为来自客户机的数据是nester对象,如果是,请尝试对其进行析构函数。如果您通过电子邮件发送:'pranav@gmail.com'}然后在服务器中使const{email}=req.body;但它的工作与相同来源的客户端很好。我唯一的问题是跨源客户端
    document.getElementById('send').addEventListener('click',async()=>{
               let data = {lat,lon}
                await fetch('https://demoserver-app.herokuapp.com/',{mode:"no-cors"},{
                method: 'POST', // or 'PUT'
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(data),
               }).then( async (dat) =>{
                 console.log(res.json())
               }).then(res =>{
                   console.log(res)
               })
           })