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

在Travis上为Create React App运行Puppeteer测试:如何同时执行npm start与test?

解决Travis中同时执行npm start和npm test的构建失败问题

我太懂这个困扰了——想在Travis里启动服务器跑Puppeteer测试,结果npm start总以状态1退出导致构建失败,这事儿的核心原因其实很好捋清楚:

问题根源

你当前的配置里,npm start是在前台运行的,Travis会死死等着这个命令执行完毕,才会去跑npm test。但正常情况下,启动服务器的命令是不会主动退出的,它会一直挂着提供服务;可如果服务器启动失败(比如端口被占、代码报错、依赖缺漏),npm start就会直接退出并返回状态1,自然触发构建失败。就算服务器能启动成功,Travis也会一直卡着等它结束,永远跑不到测试步骤。

正确的配置方案

我们需要把服务器放到后台运行,并且等服务器真正启动就绪后再执行测试,这样测试才能正常连接到服务器。具体操作分两步:

  1. 先安装一个叫wait-on的工具,它能帮我们精准等待服务器启动完成:
npm install --save-dev wait-on
  1. 修改你的.travis.yml配置:
language: node_js
node_js:
  - "8"
cache:
  directories:
    - "node_modules"
install:
  - npm install
script:
  - npm start &  # 用&把服务器进程放到后台运行,不阻塞后续命令
  - wait-on http://localhost:3000  # 等待服务器就绪,这里的端口改成你实际使用的端口
  - npm test

额外提醒

  • 如果你服务器的端口不是3000,一定要把wait-on后面的URL改成对应端口,比如http://localhost:8080。
  • 如果还是启动失败,去Travis的构建日志里查看npm start的输出内容,里面会有服务器启动失败的具体原因(比如代码语法错、端口冲突),针对性排查就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:45:35