我正在尝试通过 WSL2 使用 Windows chrome 可执行文件(作为参考,Flutter 着眼于$CHROME_EXECUTABLE
在 chrome 中启动 Web 应用程序)。
在我的 bashrc 中,我有以下内容:
export CHROME_EXECUTABLE="/mnt/c/program\ files/google/chrome/application/chrome.exe"
有了这个,flutter doctor
抱怨$CHROME_EXECUTABLE
没有指向 chrome 可执行文件。如果我$CHROME_EXECUTABLE
在 bash 中执行,我会得到:
bash: /mnt/c/program\: No such file or directory
但是,如果我执行/mnt/c/program\ files/google/chrome/application/chrome.exe
,它会起作用并在窗口内打开一个 chrome 实例。
这里似乎存在一些转义问题,但我不确定发生了什么,我认为\
会转义“程序文件”中的空间?
答案1
坦白说,我不使用 Flutter,所以我在这里可能是错的,但从一些快速研究来看,Flutter 似乎不仅仅是“启动”Chrome。它确实需要一个 Chromium 可执行文件来交流(可能通过 webdriver)进行调试。
如果确实如此,那么将 Windows 版本的 Chrome 与 Linux 版本的 Flutter 结合使用是行不通的。这类似于尝试将 Windows 版本的 Chrome 与 Selenium 一起使用。这就解释了为什么即使你的路径是正确的,Flutter 也会抱怨 Windows 二进制文件不是“Chrome 可执行文件”。
在这种情况下,解决方案是在 WSL 中安装 Linux 版本的 Chrome(或 Chromium)。以下是这个问题,您可以通过以下方式执行此操作:
- 升级到 Windows 11,支持使用 WSLg 在 Windows 上运行 Linux GUI 应用程序。
- 根据 harrymc 的回答在 Windows 上使用第三方 X 服务器
xrdp
根据我的回答使用。这是直接链接到 Ask Ubuntu 答案,我提供了完整的步骤。
xrdp
至少我已经使用该方法在 WSL 上成功运行了 Selenium 。
答案2
您可以使用旧的 8.3 命名风格;如果 Chrome 位于C:\progra~1
,则命令为
/mnt/c/progra~1/google/Chrome/Application/chrome.exe
要查找合适的短名称,请使用
DIR C:\ /X
答案3
export CHROME_EXECUTABLE="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"
这对我有用