【发布时间】:2021-12-22 15:26:48
【问题描述】:
我有一个在 Docker 容器中运行的 Web 应用程序。据我了解,使用“cypress/base”映像应该提供必要的依赖项。但是,尝试从附加的 shell(无头运行)启动 Cypress 测试会导致以下输出:
Unhandled rejection Error: Your system is missing the dependency: Xvfb
Install Xvfb and run Cypress again.
Read our documentation on dependencies for more information:
https://on.cypress.io/required-dependencies
If you are using Docker, we provide containers with all required dependencies installed.
----------
Error: spawn Xvfb ENOENT
----------
Platform: linux (Debian - 10.11)
Cypress Version: 8.5.0
at /app/node_modules/cypress/lib/errors.js:328:17
at tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:729:18)
at Promise._fulfill (/app/node_modules/bluebird/js/release/promise.js:673:18)
at Promise._resolveCallback (/app/node_modules/bluebird/js/release/promise.js:466:57)
at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:559:17)
at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
手动安装 Xvfb 并不能解决问题;它只会导致另一个错误,说明无法解析 Cypress 的依赖项。
Dockerfile:
FROM node:16
RUN mkdir /app
WORKDIR /app
COPY package.json .
COPY yarn.lock .
RUN yarn
RUN npx browserslist@latest --update-db
COPY . .
CMD ["yarn", "start"]
docker-compose.yml:
version: "3"
services:
ponder:
image: cypress/base:16
container_name: myApplication
build: ./
volumes:
- ./src:/app/src
- ./public:/app/public
- ./package.json:/app/package.json
- /app/node_modules
ports:
- 3001:3000
stdin_open: true
想法?
编辑:
Xvfb 是通过运行apt-get update 手动安装的,然后运行apt-get install xvfb。在此之后尝试运行赛普拉斯,给出:
Unhandled rejection Error: Cypress failed to start.
This may be due to a missing library or dependency. https://on.cypress.io/required-dependencies
Please refer to the error below for more details.
----------
/root/.cache/Cypress/8.5.0/Cypress/Cypress: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
----------
Platform: linux (Debian - 10.11)
Cypress Version: 8.5.0
at /app/node_modules/cypress/lib/errors.js:328:17
at tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:729:18)
at Promise._fulfill (/app/node_modules/bluebird/js/release/promise.js:673:18)
at Promise._resolveCallback (/app/node_modules/bluebird/js/release/promise.js:466:57)
at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:559:17)
at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:729:18)
at Promise._fulfill (/app/node_modules/bluebird/js/release/promise.js:673:18)
at Promise._resolveCallback (/app/node_modules/bluebird/js/release/promise.js:466:57)
at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:559:17)
at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
【问题讨论】:
-
能否添加安装xfvb的具体命令以及返回的具体错误是什么?
-
好的,我现在已经添加了,@agoff。
-
看来
cypress/base实际上并没有提供所有必要的要求,因为您的容器缺少libnss.so。在基于 Debian 的发行版上,可以在 libnss3 包中找到
标签: docker docker-compose cypress