GitHub Actions执行单元测试提示Jest未找到问题求助
解决GitHub Actions中执行单元测试时
jest: not found的问题 问题原因
你在GitHub Actions的环境变量里设置了NODE_ENV: production,而npm install在production模式下会自动跳过安装devDependencies中的包。你的jest是放在devDependencies里的,所以CI环境中没有安装jest,导致执行npm run unit-tests时找不到命令。本地执行正常是因为本地默认不会以production模式安装依赖。
解决方案
方案1:使用npm ci并强制安装所有依赖(推荐)
npm ci更适合CI环境,它会严格按照package-lock.json安装依赖,避免版本不一致问题。加上--production=false参数可以强制安装devDependencies:
- name: Unit Tests run: | npm ci --production=false npm run unit-tests
方案2:临时修改NODE_ENV为development
在执行依赖安装时,临时将NODE_ENV改为development,确保安装所有依赖:
- name: Unit Tests run: | NODE_ENV=development npm install npm run unit-tests
或者通过步骤级环境变量覆盖:
- name: Unit Tests env: NODE_ENV: development run: | npm install npm run unit-tests
方案3:将jest移至dependencies(不推荐)
不建议这么做,因为jest是开发阶段工具,生产环境不需要,移入dependencies会增加生产包体积。如果必须这么做,修改package.json将jest从devDependencies移到dependencies即可。
内容的提问来源于stack exchange,提问作者Kay
相关产品推荐
相关产品推荐

