所以我有一台运行 VcXsrv 的 Windows 10 机器。我已经安装了 WSL2,在我的 WSL2 环境中,我可以在 Headful 模式下运行我的 Node.js Puppeteer 应用程序而不会出现问题。
这里的问题是我现在想在 WSL2 上运行的 Docker 容器中运行应用程序,而不是直接在 WSL2 中运行。我已经设置了一个 docker 容器,并且该应用程序在无头模式下工作,但我不知道如何配置 Docker 容器以连接到在 Windows 主机上运行的 X 服务器。
连接必须从 Docker 到 WSL2,然后到 Windows。
puppeteer 抛出的错误非常通用:
(node:92) UnhandledPromiseRejectionWarning: Error: Failed to launch the browser process!
Fontconfig warning: "/etc/fonts/fonts.conf", line 100: unknown element "blank"
[110:110:0729/163412.032352:ERROR:browser_main_loop.cc(1417)] Unable to open X display.
TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
at onClose (/var/www/html/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:193:20)
at ChildProcess.<anonymous> (/var/www/html/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:184:79)
我在 docker 容器内设置了 DISPLAY 环境变量,使其具有与我的 WSL2 环境相同的值:
workspace@d1d60e8e27a5:/var/www/html$ echo $DISPLAY
172.30.240.1:0.0
当直接在 WSL2 中运行应用程序时,此相同的值有效