【问题标题】:CircleCI: $ npm test fails and doesn't find installed packageCircleCI:$ npm 测试失败并且找不到已安装的包
【发布时间】:2019-09-15 11:28:24
【问题描述】:

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

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


这是 CircleCI 构建作业的结果:

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


这是我使用npm test 运行的package.json 中的脚本:

"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 包,结果如下:

【问题讨论】:

  • 我想知道 circleci/node:10.13.0 的上游更改是否超出了 CircleCI 的控制 - 它会不时在他们的论坛上报告。要临时解决此问题,请查看“Spin up environment”中的 Docker 映像摘要,了解您上次成功构建的内容。我想这将是 40 个字符长。然后查看第一次失败构建的摘要,看看它是否不同。
  • 如果不同,则获取有效的,并使用circleci/node:10.13.0@sha256:c8d8e642612872e5a9882c042341c35cbecf9e13d948e3a3bfcb9(用您自己的哈希替换)。这是一个临时修复,因为它不能解决根本问题,但至少它可以让你的 CI 再次工作。
  • 如果你有这样的工作,我建议获得一个构建后的 SSH 会话并像本地机器一样调试它。我要做的第一件事是查看节点模块的安装位置,然后当您尝试运行测试时,您当前的工作目录是什么。

标签: node.js typescript npm mocha.js circleci


【解决方案1】:

我注意到 CircleCI NODE_ENV 环境变量设置为 production,因此没有安装任何 devDependencies(即使使用 npm install --save,因为它已经在 @987654326 中列为 devDependency @)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多