执行Alphavantage请求代码无中间日志,请求疑似未执行
问题原因及解决方案
核心原因:异步操作未被等待,进程提前退出
你的代码中axios.get是异步Promise操作,函数执行时会先同步跑完所有非异步代码(也就是function called和end function的日志),此时异步请求还在后台处理,没有返回响应。如果是在Node.js环境下,主线程的同步代码执行完毕后,进程会默认直接退出,导致then/catch里的回调根本没机会执行——这就是你看不到中间日志的原因。而Postman是专门的HTTP客户端,会自动等待请求响应完成,所以能正常获取结果。
修复方案
方案1:改用async/await语法等待异步请求
将函数改为async函数,用await阻塞等待axios.get的响应,确保异步操作完成后再执行后续代码:
export const retrieveData = async () => { console.log('function called'); const url = `https://www.alphavantage.co/query?function=FX_DAILY&from_symbol=EUR&to_symbol=USD&apikey=${key}`; try { const response = await axios.get(url,{ responseType: 'json', headers: { 'User-Agent': 'request' } }); console.log('first step', response); const data = response; console.log('second step'); console.log(data); const successMessage = 'hola'; console.log('success', successMessage); } catch (error) { console.error(`Error: ${error}`); } console.log('end function'); };
方案2:确保进程等待异步操作完成(Node.js环境)
如果不想修改函数结构,调用retrieveData时需要显式等待Promise完成,避免进程提前退出:
// 调用示例 retrieveData().then(() => { // 异步操作完成后再退出进程 process.exit(); });
额外检查点
虽然Postman测试正常,但还是要确认代码中的key变量是否在当前作用域内正确定义——如果key未正确导出或作用域错误,也可能导致请求失败(但此时catch应该会输出错误日志,不过进程提前退出的话也看不到)。
内容的提问来源于stack exchange,提问作者jorge leonart
相关产品推荐
相关产品推荐

