Github CI与TypeScript和Jest

问题描述

在本地,与tsc并行运行tsc -wnpm t -- --watch的所有工作,但是尝试将我已有的东西复制到Github CI中一直没有工作。由于某些原因,我什至无法使用ls打印文件夹。而且,TypeScript和Jest的安装似乎都成功了。

When it runs inside Github CI,我只是收到tscRun tsc下方Error: Process completed with exit code 1.的所有可能命令的日志。

这是我在Github CI中的当前设置:

...

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Installing TypeScript
        run: npm i -D typescript
      - name: Installing Jest
        run: npm i -D jest
      - name: Compiling TypeScript Code
        run: tsc
      - name: Running Tests
        run: npm t

这是我的package.json

{
  ...
  "main": "dist/content.js","scripts": {
    "test": "jest","testwatch": "jest --watchAll"
  },"devDependencies": {
    "@types/jest": "^26.0.15","jest": "^26.6.2","ts-jest": "^26.4.3","typescript": "^4.0.5"
  }
}

我认为与我的tsconfig.json相关的唯一事情是:

{
  "outDir": "./dist/","rootDir": "./lib/",}

我在此设置中犯了一个错误吗?我错过了什么? Here是我的项目的完整设置。

解决方法

正如@jonrsharpe的评论中提到的那样,整个问题可以用一个错字来概括。我基本上忘记了将代码签出到CI环境中。因此,我必须将其添加到steps的开头:

...
steps:
  - name: Checking out the Project's Code
    uses: actions/checkout@v2
  ...

Jon指出的另一个问题是缺少package-lock.json文件,该文件的目的是使项目中安装的软件包与CI VM中安装的软件包一致—使用npm ci而不是然后npm i