【问题标题】:Jest not found while running JEST in docker container在 docker 容器中运行 JEST 时找不到 Jest
【发布时间】:2022-02-10 21:24:00
【问题描述】:

我在下面创建了简单的 Dockerfile:

FROM node:16.7.0
WORKDIR /app
COPY . .
RUN npm install
# ENTRYPOINT [ "npm" ]
CMD ["sh", "-c", "tail -f /dev/null"]

我添加了一个带有"tail -f /dev/null" 的cmd 行,以检查如果我在容器内发出npm test 会出现什么问题。

只要我在容器内运行npm test --> 它就会抛出错误

# npm test

> docker-jest@1.0.0 test
> jest --verbose

sh: 1: jest: not found

我的package.json

{
  "name": "docker-jest",
  "version": "1.0.0",
  "description": "Package for Jest",
  "scripts": {
    "test": "jest --verbose"
  },
  "Dependencies": {
    "@babel/node": "*",
    "@babel/core": "*",
    "@babel/preset-env": "*",
    "babel-jest": "*",
    "jest": "*"
  },
  "license": "ISC"
}

sum.js

function sum(a, b) {
  return a + b;
}

module.exports = sum;

sum.test.js

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

即使我禁用 CMD 并启用 ENTRYPOINT 并且在构建之后,如果我发出:

docker run -it <imagename> test 

它抛出了同样的错误,我看到 npm install 正在安装,但找不到开玩笑 @/usr/local/lib/node_modules/ 因为我看到节点模块部署在容器内的 location/usr/local/lib/node_modules/ 中,如果我发出jest 上面写着jest not found。如果我在没有容器的情况下运行相同的程序,它可以正常工作。我的意思是在运行npm install and then npm run test 之后在命令行中。

谁能帮助我了解为什么会出现此错误以及如何修复它?

-----------更新------------- Found the fix,这是因为我的包锁定文件损坏了。当我在没有 docker 的情况下在本地进行测试时,我以某种方式损坏了锁定文件,后来当我构建并尝试使用 docker 运行时,损坏的锁定文件导致了很多问题。所以我删除了它并再次通过 docker 运行......它按预期工作。

【问题讨论】:

  • 对我来说效果很好,你确定你构建和运行正确的图像 ID 吗?因为一切对我来说都很好 Docker 版本 20.10.8,构建 3967b7d
  • 奇怪的是,同样对你有用,而对我来说却不是,是的,我检查过,一切都是一样的。另一个奇怪的是,如果我在容器内运行npm install -g jest,那么我就可以运行 jest。除了 docker build 命令期间的 npm install 。现在我不确定你是否可以在普通的 package.json 中运行 global 包。

标签: node.js docker jestjs


【解决方案1】:

我遇到了同样的问题,我的解决方法是运行 npm install -g jest(或 yarn global add jest)。

要将其添加到您的 package.json 中,请执行以下操作:

"scripts: {
  "test": "npm install -g jest && jest --verbose"
},

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 2022-06-12
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多