react和axios POST抛出一个未捕获(在承诺中)的TypeError:已解析未定义

fdx2calv  于 2022-11-05  发布在  iOS
关注(0)|答案(2)|浏览(150)

我很困惑我在代码中做错了什么。GET调用得到了解决,但是当我试图对同一个服务器进行POST调用时,我得到了一个错误。我的POST端点在Postman中工作得很好。

api连接.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

索引.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
    });
  }
lx0bsm1f

lx0bsm1f1#

我已经找到了这个问题的罪魁祸首,但如果有人能添加更多关于它的信息,它可能会对其他人有帮助。
在我的问题中,为了简洁起见,我将请求URL从导入常量改为硬编码链接。
在我的代码中,我有一个用于GETPOST的变量

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

我像这样导入端点变量

import * as apiEndpoints from './apiEndpoints';

api端点.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';

由于某种未知的原因,即使我在定义data.ep时没有打错,EP_ANSWER也会抛出错误(data.epEP_ANSWER,我检查了一百万次)
解决方案是只将EP_ANSWER更改为EP_ANS,一切都按预期运行。
不知道为什么会这样。它可能是某个全局变量或保留字。

t5zmwmid

t5zmwmid2#

只是偶然发现了这一点,并注意到@安藤的回复。
所以,我知道我首先尝试了一个硬编码的URL,它工作。
然后,我成功地运行了url.toString(),它成功了。
不知道为什么,但Javascript似乎对待对象字符串不同于对待真正的字符串。

相关问题