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

使用start-server-and-test时GraphQL服务超时,测试命令未执行

问题原因与解决方案

核心原因

start-server-and-test 默认通过GET请求检测目标URL是否返回200状态码来判断服务是否就绪,但GraphQL服务的默认端点(通常是/graphql)一般只接受POST请求,对GET请求会返回非200状态码(比如405 Method Not Allowed),导致工具判定服务未就绪,因此不会执行后续的test命令。

具体解决办法

1. 改用支持GET的GraphQL查询URL

如果你的GraphQL服务开启了GET查询支持,可以将检测URL改为带简单查询的路径,确保GET请求能返回200:

"ci": "start-server-and-test test-server https://localhost:4000/graphql?query={__typename} test"

2. 使用自定义检测命令

通过start-server-and-test的自定义命令检测方式,发送POST请求确认GraphQL服务就绪:

"ci": "start-server-and-test test-server 'curl -X POST https://localhost:4000/graphql -H \"Content-Type: application/json\" -d \"{\\\"query\\\": \\\"{ __typename }\\\"}\"' test"

3. 添加健康检查端点

如果你的服务有单独的健康检查接口(比如/health),直接将检测URL指向该端点,确保它返回200状态码:

"ci": "start-server-and-test test-server https://localhost:4000/health test"

额外排查点

  • 手动运行npm run test-server,然后用curl -v https://localhost:4000查看实际返回的状态码,确认服务是否正常启动。
  • 如果使用自签名HTTPS证书,工具可能会拒绝连接,可改用HTTP(若测试服务允许)或添加--ssl-verify false参数:
    "ci": "start-server-and-test --ssl-verify false test-server https://localhost:4000/graphql?query={__typename} test"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:42:14