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

Express.js Node服务器未返回函数调用结果问题咨询

问题分析与修复方案

我帮你梳理下代码里的几个关键问题,这些问题直接导致服务器没能正确返回结果:

1. 异步操作未关联响应逻辑

fs.readFile是异步函数,你当前代码里只定义了parseMeGood函数,但既没有调用它,也没在文件读取完成后把数据返回给客户端。异步操作的结果必须在回调函数内部处理响应。

2. 语法错误导致代码无法运行

你的代码存在未闭合的大括号,还有if (err) throw ...的代码片段不完整,这会直接导致服务器启动失败,更别说处理请求了。

3. 跨域请求拦截问题(前端必踩坑)

因为Vue客户端运行在http://localhost:8080,服务器在http://localhost:3000,浏览器会拦截跨域请求,所以必须在Express服务器中配置CORS规则。


修复后的完整index.js代码

const express = require('express');
const app = express();
const port = 3000;
const fs = require('fs');
// 引入cors处理跨域
const cors = require('cors');

// 配置CORS,仅允许8080端口的前端请求
app.use(cors({
  origin: 'http://localhost:8080'
}));

app.get('/', (request, response) => {
  // 直接读取并处理JSON文件
  fs.readFile('./cityList.json', 'utf8', function (err, data) {
    if (err) {
      // 错误处理:返回500状态码和具体错误信息
      return response.status(500).json({ error: '读取文件失败', detail: err.message });
    }
    try {
      // 解析JSON数据为数组
      const cityList = JSON.parse(data);
      // 将解析后的数组返回给客户端
      response.json(cityList);
    } catch (parseErr) {
      // JSON格式错误的处理
      response.status(400).json({ error: 'JSON解析失败', detail: parseErr.message });
    }
  });
});

// 启动服务器并打印日志
app.listen(port, () => {
  console.log(`服务器运行在 http://localhost:${port}`);
});

额外操作提示

  • 先安装cors依赖:在服务器目录执行 npm install cors
  • 确保cityList.json文件放在服务器根目录下,路径正确
  • 前端axios请求示例(供参考):
axios.get('http://localhost:3000/')
  .then(res => {
    console.log('获取到城市列表:', res.data);
    // 这里可以把数据绑定到Vue组件中
  })
  .catch(err => {
    console.error('请求失败:', err);
  });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:22:43