You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express + Axios调用CoinGecko API出现500内部服务器错误求助

问题排查与修复

你的server.js存在以下关键错误,直接导致500内部服务器错误:

  • 未引入axios依赖:代码中调用了axios.get但未导入axios模块,Node.js无法识别该模块会直接抛出错误。
  • 路由回调未声明async:使用await关键字的函数必须标记为async,否则会触发语法错误。
  • 混用await与Promise链式调用:同时使用await和.then/.catch会造成逻辑混乱,建议统一使用try/catch风格。
  • 错误未向客户端反馈:catch块仅打印错误日志,未向客户端返回错误状态码和信息,导致请求无响应触发500。
  • JS文件中使用TS语法:<ICoin[]>是TypeScript泛型语法,普通JS文件不支持,会引发语法错误。
  • 冗余依赖:导入了CoinGecko模块但未实际使用,可移除。

修复后的server.js代码:

const express = require('express');
const cors = require("cors");
const axios = require('axios'); // 新增axios导入
const app = express();

app.use(cors())
// 给路由回调添加async关键字
app.get('/coins', async (req, res) => {
    try {
        // 移除TypeScript泛型,改用纯JS写法
        const response = await axios.get(`https://api.coingecko.com/api/v3/coins/markets`, {
            params: {
                vs_currency: "usd",
                per_page: 100,
                page: 1,
            }
        });
        console.log(response);
        res.json(response.data);
    } catch (error) {
        console.log(error);
        // 向客户端返回错误状态和详情
        res.status(500).json({ error: '获取数据失败', details: error.message });
    }
})

app.listen(5000, () => {
    console.log('Server listening on port 5000');
});

额外提示:

  1. 确保已安装axios依赖:在项目根目录执行npm install axios
  2. 前端请求代码建议补充错误捕获,方便排查问题:
export default class CoinsService {
    static async getAll(page) {
        try {
            const response = await axios.get('/coins');
            console.log(response);
            return response.data;
        } catch (error) {
            console.error('请求失败:', error);
        }
    }
}

内容的提问来源于stack exchange,提问作者FakeHuman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:11:12