node.js - CircleCI:$ npm 测试失败并且找不到已安装的包
问题描述
由于某种原因,Circle 无法在构建过程的前一个步骤中使用ts-mocha
安装。npm install
它曾经工作过,但由于某种原因它突然不再工作了。
这是 CircleCI 构建作业的结果:
所有测试在本地运行良好:
这是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
包,结果如下:
解决方案
我注意到 CircleCINODE_ENV
环境变量设置为production
,因此devDependencies
没有安装任何变量(即使使用,因为它已经在 中npm install --save
列为 a )。devDependency
package.json
我不知道环境变量何时更改为该值,但奇怪的是它开始从一天到另一天(尽管从设置环境变量的那一刻起它应该一直在中断)所以它非常很难调试,但这是一个简单的修复:将NODE_ENV
CircleCI 中的环境变量更改为不同于production
.
推荐阅读
- android - 我如何在房间数据库android中求和值
- tensorflow - 在图形执行中不允许使用 `tf.Tensor` 作为 Python `bool`
- c++ - Applying patch to a package outside of buildroot directory
- python - Pygame - 修复暂停菜单的问题?
- swift - Swift - 检查属性文本是否为空
- python - Python:如何确保函数中使用的模块别名正确?
- reactjs - Express 服务器“加载资源失败:服务器以 500 状态响应”在向服务器获取请求后。如何修复此错误?
- java - 如何使用 WriteBatch 删除文档引用列表?
- postgresql - 如果从另一个@Transactional 注释方法调用@Transactional 注释方法,这是否会导致消耗两个连接?
- r - 如何修复代码中的错误并将数据存储为for循环中的csv?