Docker容器在您的平台上没有Chrome浏览器的二进制文件

14

我正在一个 Docker 容器中运行 Angular 单元测试,但是出现了这个错误:

21 01 2021 01:51:10.057:INFO [launcher]: Launching browsers ChromeHeadless with concurrency unlimited
21 01 2021 01:51:10.063:INFO [launcher]: Starting browser Chrome
21 01 2021 01:51:10.097:ERROR [launcher]: No binary for Chrome browser on your platform.
  Please, set "CHROME_BIN" env variable.

为了运行测试,我只需在 Docker Hub 上使用 node:14 镜像运行命令 ng test。

是否有一个几乎相同(最好是官方的)镜像,它也已经准备好了Chrome?

3个回答

16

我必须在构建服务器上运行这个:

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list
apt-get update
apt-get install -y google-chrome-stable xvfb
npm i -g @angular/cli

除了最后一个指令安装 Chrome 之外,所有指令都需要安装 Chrome。

注意:我必须安装 Chrome,因为 ng test 使用 Chrome - 不过,我已经切换到 Jest,我相信可以在没有安装 Chrome 的情况下运行单元测试 - 尽管我还没有检查过。


1
这对使用yum(如RHEL、CentOS、Fedora等)的系统适用。需要用于测试真实浏览器的karma或其他框架(jest不支持)。
echo -e '[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub' >> /etc/yum.repos.d/google-chrome.repo
yum install -y google-chrome-stable

1
我来这里是因为有一个略微不同的问题,但是出现了相同的错误。我使用的答案是错误信息的最后一行:
Please, set "CHROME_BIN" env variable.

这可以是您安装了Chrome或Chromium的任何位置。显然,如果您尚未安装它们,请先安装它们。
对于我的设置,我在Pop_OS!上安装了flatpak Chrome和Chromium(其底层是Ubuntu)。运行:
export CHROME_BIN=~/.local/share/flatpak/app/com.google.Chrome/current/active/export/bin/com.google.Chrome

然后重新运行命令就可以了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接