开发者问题收集

react 和 axios POST 抛出 Uncaught (in promise) TypeError: parsed is undefined

2020-12-03
4399

我不明白我的代码到底哪里出错了。GET 调用已解析,但当我尝试对同一台服务器进行 POST 调用时,却出现错误。我的 POST 端点与 Postman 配合良好。

apiConnection.js

function get(data){
  return axios.get("http://localhost:8080/api/questions", 
    {
      params:data.payload
    }, {
    headers: {
      'accept': 'application/json',
    }
  })
}

function post(data){
  console.log(data.payload) //my payload is received here
  return axios.post("http://localhost:8080/api/answer", {
      params:data.payload
    }, {
      headers: {
        'accept': 'application/json',
      }
    }
  )
}

export { get, post }

这是我在控制台中收到的错误

在此处输入图像描述

这是我在 react 中进行调用的方式

index.js

GET(正常接收响应)

import { get, post } from "apiConnection.js"
...
componentDidMount(){
    const data = {
      payload: {
        linkId: getSlug()
      }
    }
    get(data).then((result) => {
      this.setState({reportId: result.data.report.id});
    })
  }

POST(抛出错误)

vote(userVote){
    const data = {
      payload: {
        reportId: this.state.reportId,
      }
    }
    
    post(data).then((result)=>{
      this.state.questions[this.state.currentQuestion].vote = userVote
    });
  }
2个回答

我已经找到了问题的根源,但如果有人可以添加更多相关信息,可能会对其他人有所帮助。

在我的问题中,为简洁起见,我将请求 URL 从导入的常量更改为硬编码链接。

在我的代码中,我有一个用于 GET POST 的变量

return axios.post(apiEndpoints[data.ep], data.payload)

我像这样导入端点变量

664714​​506

apiEndpoints.js

const server = 'http://localhost:8080/'
const api_version = 'api/'
const base_url = server+api_version;

export const EP_QUESTIONS = base_url+'questions';
export const EP_ANSWER = base_url+'answer';

由于某些未知原因, EP_ANSWER 会抛出错误,即使我在定义 data.ep 时没有输入错误( data.epEP_ANSWER ,我检查了一百万次)

解决方案是将 EP_ANSWER 更改为 EP_ANS ,一切按预期进行。

不知道为什么会这样。它可能是某个全局变量或保留字。

Ando
2020-12-04

刚刚看到这个并注意到了@Ando 的回复。

因此,我知道我首先尝试了一个硬编码的 URL,它起作用了。

然后我成功执行了 url.toString() 并且它起作用了。

不知道为什么,但是 Javascript 似乎将对象字符串与真实字符串区别对待。

Simon Le Pine
2022-09-14