Google Chrome 以 WSL2 Ubuntu 上的多个错误开始,Karma/Jasmine 用于 Angular 测试

Google Chrome starts with multiple errors on WSL2 Ubuntu with Karma/Jasmine for Angular testing

在我的 Angular 项目中,我尝试使用 Google Chrome 来测试 Karma & Jasmine。

基本上一切正常,但是当 Google Chrome 启动时它给了我多个错误。我在本主题中尝试了来自 Whosebug ansers 的一些提示,但没有任何帮助。

我使用这个版本:

我使用ng test命令启动。

我有这个 karma.conf.js 文件:

module.exports = function (config) {
  config.set({
    browserNoActivityTimeout: 500000,
    basePath: '',
    frameworks: ['jasmine', '@angular-devkit/build-angular'],
    plugins: [
      require('karma-jasmine'),
      require('karma-coverage'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('@angular-devkit/build-angular/plugins/karma')
    ],
    client: {
      clearContext: false
    },
    coverageReporter: {
      dir: 'reports/coverage',
      reporters: [
        { type: 'html', subdir: 'report-html' },
        { type: 'lcov', subdir: 'report-lcov' }
      ],
      fixWebpackSourcePaths: true
    },
    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome', 'ChromeHeadless', 'ChromeHeadlessCI'],
    customLaunchers: {
        ChromeHeadlessCI: {
          base: 'ChromeHeadless',
          flags: ['--no-sandbox', '--disable-gpu']
        }
    },
    singleRun: false,
    restartOnFileChange: true
  });
};

我在 ng test 启动后收到此错误消息:

✔ Browser application bundle generation complete.
10 03 2022 16:13:58.251:WARN [karma]: No captured browser, open http://localhost:9876/
10 03 2022 16:13:58.258:INFO [karma-server]: Karma v6.3.16 server started at http://localhost:9876/
10 03 2022 16:13:58.259:INFO [launcher]: Launching browsers Chrome, ChromeHeadless, ChromeHeadlessCI with concurrency unlimited
10 03 2022 16:13:58.261:INFO [launcher]: Starting browser Chrome
10 03 2022 16:13:58.282:INFO [launcher]: Starting browser ChromeHeadless
10 03 2022 16:13:58.301:INFO [launcher]: Starting browser ChromeHeadless
10 03 2022 16:13:58.774:ERROR [launcher]: Cannot start ChromeHeadless
        [0310/161356.334:ERROR:sandbox_policy_base.cc(351)] Failed to add sandbox rule. error = 2, subsystem = 0, semantics = 0, pattern = '\tmp\karma-55099323\Default\chrome_debug.log'

DevTools listening on ws://127.0.0.1:9222/devtools/browser/e8db1b66-063b-4d55-8d9d-f17ab68c3c76
[0310/161356.340:ERROR:gpu_process_host.cc(966)] GPU process launch failed: error_code=2
[0310/161356.340:WARNING:gpu_process_host.cc(1277)] The GPU process has crashed 1 time(s)
[0310/161356.341:ERROR:sandbox_policy_base.cc(351)] Failed to add sandbox rule. error = 2, subsystem = 0, semantics = 0, pattern = '\tmp\karma-55099323\Default\chrome_debug.log'
[0310/161356.344:ERROR:simple_backend_impl.cc(80)] Failed to create directory: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\js
[0310/161356.344:ERROR:simple_backend_impl.cc(80)] Failed to create directory: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\wasm
[0310/161356.345:ERROR:simple_backend_impl.cc(80)] Failed to create directory: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\js
[0310/161356.345:ERROR:simple_backend_impl.cc(80)] Failed to create directory: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\wasm
[0310/161356.345:ERROR:simple_backend_impl.cc(735)] Simple Cache Backend: wrong file structure on disk: 1 path: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\js
[0310/161356.345:ERROR:simple_backend_impl.cc(735)] Simple Cache Backend: wrong file structure on disk: 1 path: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\wasm
[0310/161356.346:ERROR:simple_backend_impl.cc(80)] Failed to create directory: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\js
[0310/161356.346:ERROR:simple_backend_impl.cc(80)] Failed to create directory: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\wasm
[0310/161356.346:ERROR:sandbox_policy_base.cc(351)] Failed to add sandbox rule. error = 2, subsystem = 0, semantics = 0, pattern = '\tmp\karma-55099323\Default\chrome_debug.log'
[0310/161356.346:ERROR:simple_backend_impl.cc(80)] Failed to create directory: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\js
[0310/161356.346:ERROR:simple_backend_impl.cc(735)] Simple Cache Backend: wrong file structure on disk: 1 path: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\js
[0310/161356.346:ERROR:disk_cache.cc(185)] Unable to create cache
[0310/161356.346:ERROR:simple_backend_impl.cc(80)] Failed to create directory: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\wasm
[0310/161356.346:ERROR:simple_backend_impl.cc(735)] Simple Cache Backend: wrong file structure on disk: 1 path: C:\Program Files\Google\Chrome\Application.0.4844.51\/tmp/karma-55099323\Default\Code Cache\wasm
[0310/161356.346:ERROR:disk_cache.cc(185)] Unable to create cache
[0310/161356.347:ERROR:gpu_process_host.cc(966)] GPU process launch failed: error_code=2
[0310/161356.347:WARNING:gpu_process_host.cc(1277)] The GPU process has crashed 2 time(s)
[0310/161356.347:ERROR:sandbox_policy_base.cc(351)] Failed to add sandbox rule. error = 2, subsystem = 0, semantics = 0, pattern = '\tmp\karma-55099323\Default\chrome_debug.log'
[0310/161356.348:ERROR:gpu_process_host.cc(966)] GPU process launch failed: error_code=2
[0310/161356.348:WARNING:gpu_process_host.cc(1277)] The GPU process has crashed 3 time(s)
[0310/161356.349:ERROR:disk_cache.cc(185)] Unable to create cache
[0310/161356.349:ERROR:sandbox_policy_base.cc(351)] Failed to add sandbox rule. error = 2, subsystem = 0, semantics = 0, pattern = '\tmp\karma-55099323\Default\chrome_debug.log'
[0310/161356.349:ERROR:shader_disk_cache.cc(612)] Shader Cache Creation failed: -2
[0310/161356.349:ERROR:gpu_process_host.cc(966)] GPU process launch failed: error_code=2
[0310/161356.349:WARNING:gpu_process_host.cc(1277)] The GPU process has crashed 4 time(s)
[0310/161356.350:ERROR:sandbox_policy_base.cc(351)] Failed to add sandbox rule. error = 2, subsystem = 0, semantics = 0, pattern = '\tmp\karma-55099323\Default\chrome_debug.log'
[0310/161356.350:ERROR:gpu_process_host.cc(966)] GPU process launch failed: error_code=2
[0310/161356.350:WARNING:gpu_process_host.cc(1277)] The GPU process has crashed 5 time(s)
[0310/161356.351:ERROR:sandbox_policy_base.cc(351)] Failed to add sandbox rule. error = 2, subsystem = 0, semantics = 0, pattern = '\tmp\karma-55099323\Default\chrome_debug.log'
[0310/161356.351:ERROR:gpu_process_host.cc(966)] GPU process launch failed: error_code=2
[0310/161356.351:WARNING:gpu_process_host.cc(1277)] The GPU process has crashed 6 time(s)
[0310/161356.351:FATAL:gpu_data_manager_impl_private.cc(447)] GPU process isn't usable. Goodbye.

10 03 2022 16:13:58.774:ERROR [launcher]: ChromeHeadless stdout:
10 03 2022 16:13:58.774:ERROR [launcher]: ChromeHeadless stderr: [0310/161356.334:ERROR:sandbox_policy_base.cc(351)] Failed to add sandbox rule. error = 2, subsystem = 0, semantics = 0, pattern = '\tmp\karma-55099323\Default\chrome_debug.log'

10 03 2022 16:13:59.662:ERROR [launcher]: ChromeHeadless stdout:
10 03 2022 16:13:59.662:ERROR [launcher]: ChromeHeadless stderr: [0310/161357.293:ERROR:sandbox_policy_base.cc(351)] Failed to add sandbox rule. error = 2, subsystem = 0, semantics = 0, pattern = '\tmp\karma-55099323\Default\chrome_debug.log'
[0310/161357.298:ERROR:gpu_process_host.cc(966)] GPU process launch failed: error_code=2
[0310/161357.298:WARNING:gpu_process_host.cc(1277)] The GPU process has crashed 1 time(s)
10 03 2022 16:13:59.663:ERROR [launcher]: ChromeHeadless failed 2 times (cannot start). Giving up.
10 03 2022 16:14:00.649:INFO [Chrome Headless 99.0.4844.51 (Windows 10)]: Connected on socket YtOU7-_7W0PbRVPmAAAF with id 17702890
10 03 2022 16:14:13.487:INFO [Chrome Headless 99.0.4844.51 (Windows 10)]: Connected on socket FeJO3V5aAFIEiQ6UAAAH with id 15106253
10 03 2022 16:14:16.710:INFO [Chrome Headless 99.0.4844.51 (Windows 10)]: Connected on socket qg_Q7YJ3LYwvL7uPAAAJ with id 33470413
10 03 2022 16:14:19.462:INFO [Chrome Headless 99.0.4844.51 (Windows 10)]: Connected on socket Y6vmb9CXiuS-76P2AAAL with id 52983855
10 03 2022 16:14:21.047:INFO [Chrome Headless 99.0.4844.51 (Windows 10)]: Connected on socket wJWd6lOjIWLW078vAAAN with id 86066564
10 03 2022 16:14:21.452:INFO [Chrome Headless 99.0.4844.51 (Windows 10)]: Connected on socket XdRruRvWXDbj8uzfAAAP with id 2895441
10 03 2022 16:14:23.313:INFO [Chrome Headless 99.0.4844.51 (Windows 10)]: Connected on socket 7rZRct4hVskmVUAkAAAR with id 86191305

基本上 Chrome 启动,并且工作正常,但如果可能的话,我想消除这些错误消息。

知道如何解决这个问题吗?

根据@gftea 的评论,我找到了解决方案。

在我的 WSL shell 我 运行 这个命令:

export TMPDIR="d:\karma-temp"

之后错误消失了。

然后每次 Ubuntu 启动时,我都会将此导出到我的 ~/.bashrc 文件中 运行。

更新:

不幸的是,如果我使用这个 hack,VSCode 会出现一些错误,因为它也使用临时文件夹,但不知何故以不同的方式。我做了这个 GitHub issue for VSCode

所以错误仍然存​​在,因为我的 VSCode 在我的工作中更重要。