Bash
如何在 Windows chrome 的 WSL2 中設置“$CHROME_EXECUTABLE”
我正在嘗試通過 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)。要回顧這個問題的解決方案,您可以通過以下方式執行此操作:
- 升級到 Windows 11,它支持使用 WSLg 在 Windows 上執行 Linux GUI 應用程序。
- 根據 harrymc 的回答,在 Windows 上使用第三方 X 伺服器
- 根據
xrdp
我的回答在那裡使用。這是我提供完整步驟的 Ask Ubuntu 答案的直接連結。
xrdp
至少,我已經使用該方法在 WSL 上成功執行了 Selenium 。