我试图在node.js上使用傀儡,它在我的本地Mac操作系统上工作得很好,但是当代码通过CI管道时,它会抛出以下错误
error: Error: Failed to launch the browser process! spawn /usr/bin/chromium-browser ENOENT
TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md我尝试过对文档进行故障排除,但是给出的解决方案在我的情况下行不通。
* docker -
ENV CHROME_BIN="/usr/bin/chromium-browser" \
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true"
RUN set -x \
&& apk update \
&& apk upgrade \
&& apk add --no-cache \
udev \
ttf-freefont \
chromium \
&& npm install puppeteer
*Node-
const browser = await puppeteer.launch({
headless: true,
executablePath: '/usr/bin/chromium-browser',
args: [
'--no-sandbox',
'--headless',
'--disable-gpu',
'--disable-dev-shm-usage'
]
})发布于 2022-08-18 08:48:41
当我试图在docker中运行节点容器时,也遇到了同样的问题。
我的环境正在使用:
20.10.12
)
您可以在Linux机器上运行ldd chrome | grep not,以检查缺少哪些依赖项。
进入正在运行的码头容器-
docker exec -it [CONTAINER ID] /bin/bash。在此路径中运行上面的命令以查找缺少的依赖项- /node_modules/puppeteer/.local-chromium/linux-970485/chrome-linux
关于更详细的步骤,您可以遵循这个well explained answer。感谢@dhilt给出的答案。
在docker文件中添加缺少的依赖项。
Dockerfile (我不需要安装铬或铬浏览器)
RUN apt-get update \
&& apt-get -f install -y --no-install-recommends \
fonts-liberation \
libgtk-3-0 \
libwayland-client0 \
xdg-utils \
libu2f-udev \
libvulkan1 \
libnss3 \
libnspr4 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcups2 \
libdrm2 \
libxkbcommon0 \
libxcomposite1 \
libxdamage1 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libasound2 \
&& rm -rf /var/lib/apt/lists/*nodefile.js ( bowser不是在本地安装的,所以不需要设置executablePath)
// linux
let browser = await puppeteer.launch({
headless: true,
args: ['-no-sandbox']
});如果答案有帮助,请在回复中注明,这样对其他社区成员是有帮助的。
https://stackoverflow.com/questions/73068028
复制相似问题