首页 > 解决方案 > Karma:使用来自 WSL 的 Windows 的 Chrome

问题描述

我正在尝试使用 Windows 版本的 Google Chrome 从 WSL 启动业力。

在 karma.conf.js 中,我只使用 Chrome 浏览器:

[...],
browsers: ['Chrome'],
[...]

我像这样导出 CHROME_BIN 环境变量:

export CHROME_BIN='/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'

Karma 成功找到 Google Chrome,并在启动 Karma 时在正确的 URL 处打开一个新选项卡。但是,我收到此错误:

Google chrome can't read and write to its data directory /tmp/karma-XXXX

我尝试以管理员身份启动 chrome 并将缓存文件夹更改为我项目的根目录,但它不起作用。

我认为 Karma 提供给 Chrome 的路径格式存在问题(WSL 路径与 Windows 路径)。

所以我创建了一个自定义业力启动器,指定 chromeDataDir:

browsers: ['WindowsChrome'],
customLaunchers: {
  WindowsChrome: {
    base: 'Chrome',
    chromeDataDir: 'D:\\'
  }
}

通过这样做,我没有以前的错误,启动了一个新的 Chrome 实例,但 Chrome 似乎无法解析 URL,并且业力超时。此外,在我的项目中创建了很多 Chrome 文件夹。

是否有人已经使用 Chrome 从 WSL 进行业力工作,或者对正在发生的事情有任何线索?

标签: google-chromekarma-jasminekarma-runnerwindows-subsystem-for-linux

解决方案


我发现如果你在 Windows 下创建一个 C:\tmp\karma 文件夹,这个错误就会消失,Chrome 会找到这个文件夹并将其用于临时文件。

您还可以通过设置 TEMP 环境变量来更改 Chrome 用于其数据的临时文件夹,如下所示:

export TEMP='/path/to/your/folder'

重要的是 C:\path\to\your\folder 在 Windows 下必须存在。


推荐阅读