我正在尝试通过 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
,它可以工作并在 Windows 内打开一个 chrome 实例。
似乎这里有一些转义问题,但我不确定发生了什么,我认为\
会转义“程序文件”中的空间?
完全披露,我不使用 Flutter,所以我在这里可能是错的,但从一些快速研究来看,我认为 Flutter 不仅仅是“启动”Chrome。它确实需要一个 Chromium 可执行文件来进行通信(可能通过 webdriver)进行调试。
如果确实如此,那么将 Windows 版本的 Chrome 与 Linux 版本的 Flutter 一起使用是行不通的。这类似于尝试将 Windows 版本的 Chrome 与 Selenium 一起使用。这可以解释为什么即使您的路径正确,Flutter 也会抱怨 Windows 二进制文件不是“Chrome 可执行文件”。
在这种情况下,解决方案是在 WSL 中安装 Linux 版本的 Chrome(或 Chromium)。要回顾这个问题的解决方案,您可以通过以下方式执行此操作:
xrdp
我的回答在那里使用。这是我提供完整步骤的 Ask Ubuntu 答案的直接链接。xrdp
至少,我已经使用该方法在 WSL 上成功运行了 Selenium 。可以使用旧的 8.3 命名风格;如果 Chrome 在 中
C:\progra~1
,则命令为要查找适当的短名称,请使用