Netlify Functions使用axios带headers请求返回undefined如何解决?
问题根源
axios.get() 是异步方法,返回值为Promise对象,你在async函数中未添加await关键字等待请求执行完成,直接对Promise对象进行解构,无法拿到接口返回的响应数据,因此data为undefined。该问题与是否配置请求headers无关,此前无headers接口调用正常属于测试场景疏漏。
修正后的完整代码
const axios = require("axios"); exports.handler = async function (event, context) { const { id } = event.queryStringParameters; const url = `https://youtube-mp36.p.rapidapi.com/dl?id=${id}` try { // 新增await关键字等待异步请求完成 const {data} = await axios.get(url, { headers: { "x-rapidapi-host": "youtube-mp36.p.rapidapi.com", "x-rapidapi-key": `${process.env.REACT_APP_RAPID_KEY}` } }); console.log(data) return { statusCode: 200, body: JSON.stringify(data), }; } catch (err) { // 新增响应存在性判断,避免无响应场景下抛出新异常 if (err.response) { const {statusCode, statusText, headers, data} = err.response; return { statusCode: 500, body: JSON.stringify({ statusCode, statusText, headers, data }), }; } return { statusCode: 500, body: JSON.stringify({msg: '请求发起失败', error: err.message}) } } };
额外注意事项
- 确认Netlify后台已正确配置环境变量
REACT_APP_RAPID_KEY,变量名和取值均无拼写错误 - 若后续出现权限类报错,可直接打印完整headers校验环境变量是否正常注入
内容的提问来源于stack exchange,提问作者maesstro
相关产品推荐
相关产品推荐

