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

Electron运行npm run dev启动失败 wait-on未触发进程挂死问题

问题现象

执行npm install与npm run build后,首次2-3次运行npm run dev项目可正常启动,后续启动时concurrently可正常加载wait-on模块,react-scripts成功启动React本地服务后,wait-on始终不触发后续Electron启动流程,进程持续挂起、Electron窗口无法弹出。
出现问题时无任何自定义代码改动,删除build目录、node_modules目录重装依赖、重新克隆仓库均无法定位固定触发原因。
控制台输出如下:

PS D:\Home\Projects\finally> npm run dev
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.

> finally@0.1.0 dev
> concurrently -k -s command-electron "cross-env BROWSER=none npm start" "npm:electron"

[electron] npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
[0] npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
[electron]
[electron] > finally@0.1.0 electron
[electron] > wait-on tcp:3000 && electron .
[electron]
[0]
[0] > finally@0.1.0 start
[0] > react-scripts start
[0]
[0] (node:4504) [DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE] DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option.
[0] (Use `node --trace-deprecation ...` to show where the warning was created)
[0] (node:4504) [DEP_WEBPACK_DEV_SERVER_ON_BEFORE_SETUP_MIDDLEWARE] DeprecationWarning: 'onBeforeSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option.
[0] Starting the development server...
[0]
[0] Compiled successfully!
[0]
[0] You can now view finally in the browser.
[0]
[0]   Local:            http://localhost:3000
[0]   On Your Network:  http://172.28.224.1:3000
[0]
[0] Note that the development build is not optimized.
[0] To create a production build, use npm run build.
[0]
[0] webpack compiled successfully
[0] No issues found.
根因与修复方案

该问题为Windows环境下React+Electron开发栈的常见兼容问题,按优先级依次排查修复即可:

  • 修复IPv6解析冲突(90%以上场景为该原因)
    Windows默认将localhost优先解析为IPv6地址::1,而react-scripts 5.x版本默认仅监听IPv4地址127.0.0.1:3000,wait-on探测tcp:3000时默认走IPv6探测,会一直判定端口未开放;前几次启动偶发成功是系统本地DNS缓存临时生效导致,缓存失效后问题复现。
    直接修改package.json中electron脚本的wait-on探测地址,强制指定IPv4地址:
    "electron": "wait-on tcp:127.0.0.1:3000 && electron ."
    
  • 降级wait-on版本
    wait-on 7.x及以上版本在Windows平台存在TCP探测偶发挂起的已知bug,若修改IPv4地址后仍有问题,将wait-on降级到稳定版6.0.1:
    npm install wait-on@6.0.1 -D
    
  • 增加探测配置避免无限挂起
    给wait-on增加轮询间隔、超时时间参数,避免异常场景下进程永久挂起,脚本可修改为:
    "electron": "wait-on -t 30000 -i 1000 tcp:127.0.0.1:3000 && electron ."
    
    参数说明:-t 30000设置30秒探测超时,-i 1000设置1秒一次的轮询探测间隔。
  • 排查系统网络干扰
    检查本机是否开启VPN、全局代理、第三方防火墙类软件,这类软件会劫持本地端口的TCP探测请求,导致wait-on误判端口未开放,临时关闭这类软件后重试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 06:57:30