首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有/tmp/ GitHub操作-测试-2f311f40.sh: 1: jest: not

只有/tmp/ GitHub操作-测试-2f311f40.sh: 1: jest: not
EN

Stack Overflow用户
提问于 2022-09-06 12:24:28
回答 2查看 114关注 0票数 0

我在GitHub操作中有一个管道,它暗示尽管它在本地工作,它还是找不到Jest。

如果我在本地运行npm run unit-tests,它可以正常工作,但是在CI中我得到以下错误:

代码语言:javascript
复制
> jest --group=unit --coverage --verbose

/tmp/unit-tests-2f311f40.sh: 1: jest: not found
代码语言:javascript
复制
name: staging-pipeline

on:
  push:
    tags:
    - 'v*-staging'

env:
  CI: true
  NODE_ENV: production

jobs:
  unit-test:
    name: unit-test
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@master
    - name: Unit Tests 
      run: |
        npm install
        npm run unit-tests
代码语言:javascript
复制
{
  "name": "app",
  "version": "1.0.0",
  "description": "app",
  "main": "",
  "scripts": {
    "ts-node": "ts-node",
    "test": "jest",
    "unit-tests": "jest --group=unit --coverage --verbose",
    "prisma-generate": "npx prisma generate && npm install @prisma/client"
  },
  "dependencies": {
    "@prisma/client": "^4.3.1",
    "axios": "^0.27.2",
    "axios-retry": "^3.3.1",
    "dotenv": "^16.0.2",
    "mongodb": "^4.9.1",
    "qs": "^6.11.0",
    "winston": "^3.8.1",
    "zod": "^3.18.0"
  },
  "devDependencies": {
    "@types/aws-lambda": "^8.10.102",
    "@types/jest": "^29.0.0",
    "@types/node": "^18.7.15",
    "@types/qs": "^6.9.7",
    "@typescript-eslint/eslint-plugin": "^5.36.1",
    "@typescript-eslint/parser": "^5.36.1",
    "esbuild": "^0.15.7",
    "eslint": "^8.23.0",
    "eslint-config-prettier": "^8.5.0",
    "eslint-plugin-prettier": "^4.2.1",
    "jest": "^28.1.3",
    "jest-mock-extended": "^2.0.7",
    "jest-runner-groups": "^2.2.0",
    "json-schema-to-ts": "^2.5.5",
    "prettier": "2.7.1",
    "prisma": "^4.3.1",
    "ts-jest": "^28.0.8",
    "ts-node": "^10.9.1",
    "tsconfig-paths": "^4.1.0",
    "typescript": "^4.8.2"
  },
  "author": "",
  "license": "MIT"
}
EN

回答 2

Stack Overflow用户

发布于 2022-09-06 13:14:33

原因是您在本地机器上安装了jest全局命令,因此Jest命令可以在本地机器上使用,而在Github操作环境(容器)中则不适用,因此您必须用方法来修复它:

1.将jest安装在Github动作环境中。

代码语言:javascript
复制
  jobs:
  unit-test:
    name: unit-test
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@master
    - name: Unit Tests 
      run: |
        npm install
        npm install -g jest
        npm run unit-tests

2.或者在您的package.json文件中,将npm run unit-test更改为./node_modules/.bin/jest --group=unit --coverage --verbos以读取,我推荐第二种方法。

票数 0
EN

Stack Overflow用户

发布于 2022-09-06 14:21:17

您可以在我的CI中看到,我有以下变量

代码语言:javascript
复制
  NODE_ENV: production

这导致npm只安装依赖项,而不安装devDependencies。当我删除这个env变量时,它就可以安装jest并正常使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73622016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档