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

React+Express代理请求报错(ECONNREFUSED)求助

解决React + Express代理请求ECONNREFUSED错误

我帮你排查一下这个问题,看起来核心是你的Express服务器没有成功启动,或者代理配置存在冲突,导致React的请求没法正确转发到服务器。咱们一步步来解决:

1. 移除冲突的Proxy配置

在Create React App中,当你使用setupProxy.js自定义代理时,package.json里的proxy字段会被忽略,而且你这里配置的是https,但你的Express服务器用的是http,这本身就会导致请求失败。

修改package.json:
删除这一行:

"proxy": "https://localhost:3001/",

2. 修正服务器启动脚本路径

你的启动脚本node-env-run server --exec nodemon默认会找根目录下的server.js,但你的服务器文件是server/index.js,路径不匹配会导致服务器启动失败。

修改package.json里的scripts:
把server脚本改成:

"server": "node-env-run server/index.js --exec nodemon | pino-colada",

3. 确保所有服务器依赖已安装

可能你漏装了服务器需要的开发依赖,导致启动脚本无法正常运行。运行以下命令安装所有必需的包:

npm install express body-parser express-pino-logger node-env-run nodemon pino-colada

4. 优化setupProxy.js配置

调整代理配置,添加changeOrigin: true(确保请求头的Host正确设置),并简化路径匹配规则:

修改setupProxy.js:

const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
  app.use(
    '/api',
    createProxyMiddleware({
      target: 'http://localhost:3001',
      changeOrigin: true,
    })
  );
};

5. 检查端口占用

确认3001端口没有被其他程序占用:

  • Mac/Linux:运行lsof -i :3001,找到PID后用kill <PID>杀掉进程
  • Windows:运行netstat -ano | findstr :3001,找到PID后在任务管理器中结束对应进程

6. 重新启动项目

停止当前的npm run dev进程,然后重新运行:

npm run dev

此时你应该能在终端看到两行关键日志:

  • React开发服务器的Starting the development server...
  • Express服务器的Express server is running on localhost:3001

如果看到Express的启动日志,说明服务器正常运行了,再测试提交表单,应该就能成功获取到问候信息了。

内容的提问来源于stack exchange,提问作者I Love Code

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:32:47