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

Node.js使用IP作为主机时接口无法获取数据求助

问题解决方案

1. 端口冲突导致请求挂起

你的MySQL数据库已经占用了3306端口,同时将Node.js服务也监听在3306端口,这会造成端口冲突,服务器无法正常处理HTTP请求,导致浏览器一直处于加载状态。

解决步骤:

  • 修改app.listen的端口为未被占用的端口(比如3000或8080):
    app.listen(3000,()=>{
        console.log('服务器已启动,监听3000端口');
        // 原有的测试查询代码可保留在此处
    })
    
  • 之后访问接口的地址改为:http://xxx.xxx.xxx.xxx:3000/api/get

2. 接口缺少错误处理逻辑

当前的/api/get接口中,若数据库查询出现错误(如SQL语法错误、数据库连接异常等),没有对应的错误处理逻辑,会导致请求一直挂起,无法得到响应。

解决步骤:

  • 在db.query的回调函数中添加错误处理,及时返回错误响应:
    app.get("/api/get",(req,res)=>{
        let sqlInsert = "SELECT el.examID, el.categoryID, el.SubCategoryID, el.Question,A.A, A.B, A.C, A.D, A.Answer ";
        sqlInsert += " FROM ExamList el ";
        sqlInsert += " inner join ExamAnswer A on A.ExamID = el.ExamID ";
        sqlInsert += " inner join ExamSubCategory es on es.ID = el.SubCategoryID ";
        sqlInsert += " where el.CategoryID = 1 and es.ID = 1";
        db.query(sqlInsert,(err, result)=>{
            // 先处理错误情况
            if(err) {
                console.error('数据库查询出错:', err);
                return res.status(500).json({error: '数据库查询失败,请检查日志'});
            }
            // 查询成功时返回结果
            res.json(result);
        })
    });
    
    注:用res.json()替代res.send()更适合返回JSON格式的数据,符合API接口的规范。

3. HTTPS访问报错的问题

你的Node.js服务默认是HTTP服务,没有配置SSL证书,直接用https://访问会触发ERR_SSL_PROTOCOL_ERROR错误,这是正常现象。

解决步骤:

  • 开发测试阶段直接使用http://访问接口即可;
  • 如果生产环境需要HTTPS访问,需配置SSL证书(例如使用Let's Encrypt免费证书),并修改Node.js服务的启动代码以支持HTTPS。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:22:15