CircleCI:$ npm测试失败,找不到安装的软件包

时间:2019-04-26 00:40:42

标签: node.js typescript npm mocha circleci

由于某些原因,Circle在构建过程的主要步骤中无法使用与ts-mocha一起安装的npm install

它曾经可以工作,但是由于某种原因,它不再突然出现。


这是CircleCI构建作业的结果:

circle build job result

所有测试在本地运行良好:

local test run


这是我与package.json一起运行的npm test中的脚本:

"test": "env NODE_ENV=test ts-mocha ./test/**/*.spec.ts --timeout 10000"

程序包版本为"ts-mocha": "^6.0.0",

这是我的CircleCI作业配置(一个月没有更改):

jobs:
  build:
    docker:
      - image: circleci/node:10.13.0
    steps:
      - checkout
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "package-lock.json" }}
            - v1-dependencies-
      - run: npm install
      - save_cache:
          paths:
            - node_modules
          key: v1-dependencies-{{ checksum "package-lock.json" }}
      - run: npm test
      - run: npx tsc


似乎没有从Circle方面打破的事情,因为代码没有变化。

即使我尝试重新运行旧的成功版本,它们也会因相同的错误而失败。

我尝试过的事情:

  • 在同一步骤中运行npm ci && npm test,但产生相同的结果。
  • 删除package-lock.json
  • 更新package-lock.json
  • 运行npm install --no-package-lock
  • 更新npm
  • 运行npm update
  • 运行npm audit fix
  • 清洁npm缓存

还尝试使用npx而不是依赖先前安装的ts-mocha软件包,结果是:

enter image description here

1 个答案:

答案 0 :(得分:0)

我注意到CircleCI NODE_ENV环境变量设置为production,因此没有安装任何devDependencies(即使安装了npm install --save,因为它已经被列为devDependency中的package.json

我不知道何时将环境变量更改为该值,但奇怪的是它从一天到另一天开始中断(尽管自从设置env变量那一刻起就应该中断了)调试起来非常困难,但这是一个简单的解决方法:将CircleCI中的NODE_ENV环境变量更改为与production不同的内容。