Karma - Chrome 失败 2 次(无法启动)。放弃
Karma - Chrome failed 2 times (cannot start). Giving up
我一直在尝试 运行 使用 karma-chrome-launcher 我的测试,但每次我 运行 我测试它引发此错误:
INFO [launcher]: Starting browser Chrome
ERROR [launcher]: Cannot start Chrome
INFO [launcher]: Trying to start Chrome again (1/2).
ERROR [launcher]: Cannot start Chrome
INFO [launcher]: Trying to start Chrome again (2/2).
ERROR [launcher]: Cannot start Chrome
ERROR [launcher]: Chrome failed 2 times (cannot start). Giving up.
这是我的 karma.conf.js
代码:
// Karma configuration
// Generated on Mon Mar 23 2015 14:04:19 GMT-0300 (BRT)
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: 'www',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'lib/ionic/js/angular/angular.js',
'lib/ionic/js/angular/angular-animate.js',
'lib/ionic/js/angular/angular-sanitize.js',
'../node_modules/jasmine-core/lib/jasmine-core/jasmine.js',
'../node_modules/mock-local-storage/lib/mock-localstorage.js',
'../node_modules/angular-mocks/angular-mocks.js',
//'../node_modules/requirejs/require.js',
'lib/ionic/js/angular/angular-resource.js',
'lib/ionic/js/angular-ui/angular-ui-router.js',
'lib/ionic/js/ionic.js',
'lib/ionic/js/ionic-angular.js',
/*'../tests/libs/ngCordovaMocks.min.js',*/
'js/lib/ng-cordova.min.js',
'js/*.js',
'js/controllers/*.js',
'js/services/*.js',
'js/factory/*.js',
//'../tests/*.js',
'../tests/**/*.js'
],
// list of files to exclude
exclude: [
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress', 'html'],
htmlReporter: {
outputFile: '../tests/report/index.html'
},
// web server port
port: 9876,
plugins : [
'karma-junit-reporter',
'karma-jasmine',
'karma-phantomjs-launcher',
'karma-chrome-launcher'
//'karma-htmlfile-reporter'
],
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['PhantomJS'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false
});
};
我在这里安装模块:https://www.npmjs.com/package/karma-chrome-launcher
谢谢!
我的部分灵感来自这里:
也可以使用 logLevel: config.LOG_DEBUG
- 它可以帮助您了解导致错误的原因`
检查 karma.conf 中的以下设置:
captureTimeout: 60000,
browserNoActivityTimeout: 360000
browser: ["Firefox"]
- captureTimeout - 您的浏览器可能需要一些时间才能启动。 LOG_DEBUG 应该会显示一些与捕获浏览器相关的错误
- browserNoActivityTimeout - 与 Firefox 和 Chrome 相比,PhantomJS 在我的机器上真的很慢(x10)。 Karma 可能会在您的测试完成之前超时。
- browser - 我们的 jenkins 服务器在 linux 上运行,我们没有 chrome 的二进制文件,所以我们不得不切换到 firefox
如果这三个设置中的任何一个设置不正确,我们就会收到您上面描述的错误。
我的构建环境也有同样的问题。
我所做的是按照 Rafael Cichocki 的建议启用调试:
logLevel: config.LOG_DEBUG
然后尝试使用与调试输出中可见的完全相同的行启动 chrome- 浏览器。
原来 chrome 浏览器因缺少 ttf 字体而崩溃。所以 运行:
apt-get install ttf-freefont
为我解决了这个问题,karma 开始启动 chrome。
我注意到当我遇到这个错误时,当我更改规范文件并保存它时,它似乎又可以工作了。我在打字稿中遇到了一些没有破坏测试的错误(将空参数传递给虚拟组件实例构造函数)。我不知道它是否正在解决错误,因为它们在它工作之前就存在,或者是否更改文件并保存它更新了缓存。
所以这可能意味着清除 Chrome 中的缓存也可能解决它。它现在又对我有用了,所以我无法检查以验证。
我遇到了同样的问题并尝试了很多我发现的建议解决方案,但最终为我解决的是删除 node_modules
文件夹并通过 npm install
获取所有新内容。
我们使用 angular cli 的解决方案是在 karma.conf.js
中设置以下属性
autoWatch: false,
singleRun: true
我能够通过删除绝对路径 (src/examplePath
) 并将其更改为相对路径 (../../examplePath
) 来解决此问题。
规范中的示例更改:
import { myPackage } from 'src/myPath';
(似乎是问题所在)
import { myPackage } from '../../../myPath';
(似乎解决了)
请注意,我曾尝试删除节点模块并安装 npm,但这没有用。我不太确定为什么这很重要。
以防万一您 运行 这背后是公司代理。确保将 0.0.0.0 包含在 NO_PROXY 环境变量中。
否则你的测试将首先通过你的防火墙出去,它很可能无法到达 0.0.0.0。所以为了确保我在
中包含以下内容
NO_PROXY=127.0.0.1,localhost,0.0.0.0
特别是如果您 运行 在容器环境(例如您的构建管道)中进行测试,则未设置环境变量可能是 ng 测试在本地计算机上正常工作但无法连接到 google-chrome 在容器中。
我也遇到了这个问题。我在 karma.config.js 文件中做了以下三处更改。
autoWatch: false,
browsers: ['Chrome'],
singleRun: false
browsers: ['PhantomJS']
,这里允许的浏览器是PhantomJs
,但是代码正在尝试Chrome,这不是karma.conf.js.[=14=中指定的浏览器]
更改 karma.conf.js
文件 :
browsers: ['PhantomJS','Chrome', 'ChromeHeadless']
,
chrome- 用于打开新的 chrome 浏览器 window.
ChromeHeadless- 用于 运行 无需打开浏览器的测试 window
确保 Chrome 已安装并添加到 PATH
希望对您有所帮助
在 Windows Chrome 之前安装到 %LOCALAPPDATA%/Google/Chrome/Application。现在它安装到 %PROGRAMFILES%/Google/Chrome/Application。如果您使用 Chrome 的时间很长,那么您在 %LOCALAPPDATA%/Google/Chrome/Application 中有旧版本。
Karma-launcher 正在搜索 Chrome 位置,顺序为 LOCALAPPDATA->PROGRAMFILES-> 'PROGRAMFILES(X86)' ,首先找到旧版本并尝试 运行 它。
只需删除 %LOCALAPPDATA%/Google/Chrome/Application 文件夹
我在将 macOS 更新到 Catalina 后遇到了这个问题。我通过将 Puppeteer 更新到最新版本解决了这个问题。
在 Karma.conf.js
中,将超时增加到 60000
captureTimeout: 60000,
browserDisconnectTimeout: 60000,
browserDisconnectTolerance: 3,
browserNoActivityTimeout: 60000,
对我有用的:
npm un karma-chrome-launcher
npm i karma-chrome-launcher
npm i -g karma-cli
karma init
(并按照提示操作)
如果有人仅在 gitlab-runner 中遇到此错误(但在 shell 中手动 ng 测试工作正常),您可以从此处应用决定:
https://forum.gitlab.com/t/running-karma-tests-with-chrome-and-gitlab-ci/14476
决定是:在karma.config.js中,替换
部分
browsers: ['Chrome'],
来自
browsers: ['ChromeHeadlessNoSandbox'],
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: 'ChromeHeadless',
flags: ['--no-sandbox']
}
},
错误原因是Chrome不再支持no-sandbox
ng test --watch=false
在 karma.config.js 中使用设置为 false 的监视标志结合调整以下参数对我有用:
browsers: ['ChromeHeadlessNoSandbox'],
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: 'ChromeHeadless',
flags: ['--no-sandbox']
}
},
我一直在尝试 运行 使用 karma-chrome-launcher 我的测试,但每次我 运行 我测试它引发此错误:
INFO [launcher]: Starting browser Chrome
ERROR [launcher]: Cannot start Chrome
INFO [launcher]: Trying to start Chrome again (1/2).
ERROR [launcher]: Cannot start Chrome
INFO [launcher]: Trying to start Chrome again (2/2).
ERROR [launcher]: Cannot start Chrome
ERROR [launcher]: Chrome failed 2 times (cannot start). Giving up.
这是我的 karma.conf.js
代码:
// Karma configuration
// Generated on Mon Mar 23 2015 14:04:19 GMT-0300 (BRT)
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: 'www',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'lib/ionic/js/angular/angular.js',
'lib/ionic/js/angular/angular-animate.js',
'lib/ionic/js/angular/angular-sanitize.js',
'../node_modules/jasmine-core/lib/jasmine-core/jasmine.js',
'../node_modules/mock-local-storage/lib/mock-localstorage.js',
'../node_modules/angular-mocks/angular-mocks.js',
//'../node_modules/requirejs/require.js',
'lib/ionic/js/angular/angular-resource.js',
'lib/ionic/js/angular-ui/angular-ui-router.js',
'lib/ionic/js/ionic.js',
'lib/ionic/js/ionic-angular.js',
/*'../tests/libs/ngCordovaMocks.min.js',*/
'js/lib/ng-cordova.min.js',
'js/*.js',
'js/controllers/*.js',
'js/services/*.js',
'js/factory/*.js',
//'../tests/*.js',
'../tests/**/*.js'
],
// list of files to exclude
exclude: [
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress', 'html'],
htmlReporter: {
outputFile: '../tests/report/index.html'
},
// web server port
port: 9876,
plugins : [
'karma-junit-reporter',
'karma-jasmine',
'karma-phantomjs-launcher',
'karma-chrome-launcher'
//'karma-htmlfile-reporter'
],
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['PhantomJS'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false
});
};
我在这里安装模块:https://www.npmjs.com/package/karma-chrome-launcher
谢谢!
我的部分灵感来自这里:
也可以使用 logLevel: config.LOG_DEBUG
- 它可以帮助您了解导致错误的原因`
检查 karma.conf 中的以下设置:
captureTimeout: 60000,
browserNoActivityTimeout: 360000
browser: ["Firefox"]
- captureTimeout - 您的浏览器可能需要一些时间才能启动。 LOG_DEBUG 应该会显示一些与捕获浏览器相关的错误
- browserNoActivityTimeout - 与 Firefox 和 Chrome 相比,PhantomJS 在我的机器上真的很慢(x10)。 Karma 可能会在您的测试完成之前超时。
- browser - 我们的 jenkins 服务器在 linux 上运行,我们没有 chrome 的二进制文件,所以我们不得不切换到 firefox
如果这三个设置中的任何一个设置不正确,我们就会收到您上面描述的错误。
我的构建环境也有同样的问题。
我所做的是按照 Rafael Cichocki 的建议启用调试:
logLevel: config.LOG_DEBUG
然后尝试使用与调试输出中可见的完全相同的行启动 chrome- 浏览器。
原来 chrome 浏览器因缺少 ttf 字体而崩溃。所以 运行:
apt-get install ttf-freefont
为我解决了这个问题,karma 开始启动 chrome。
我注意到当我遇到这个错误时,当我更改规范文件并保存它时,它似乎又可以工作了。我在打字稿中遇到了一些没有破坏测试的错误(将空参数传递给虚拟组件实例构造函数)。我不知道它是否正在解决错误,因为它们在它工作之前就存在,或者是否更改文件并保存它更新了缓存。
所以这可能意味着清除 Chrome 中的缓存也可能解决它。它现在又对我有用了,所以我无法检查以验证。
我遇到了同样的问题并尝试了很多我发现的建议解决方案,但最终为我解决的是删除 node_modules
文件夹并通过 npm install
获取所有新内容。
我们使用 angular cli 的解决方案是在 karma.conf.js
中设置以下属性 autoWatch: false,
singleRun: true
我能够通过删除绝对路径 (src/examplePath
) 并将其更改为相对路径 (../../examplePath
) 来解决此问题。
规范中的示例更改:
import { myPackage } from 'src/myPath';
(似乎是问题所在)
import { myPackage } from '../../../myPath';
(似乎解决了)
请注意,我曾尝试删除节点模块并安装 npm,但这没有用。我不太确定为什么这很重要。
以防万一您 运行 这背后是公司代理。确保将 0.0.0.0 包含在 NO_PROXY 环境变量中。
否则你的测试将首先通过你的防火墙出去,它很可能无法到达 0.0.0.0。所以为了确保我在
中包含以下内容NO_PROXY=127.0.0.1,localhost,0.0.0.0
特别是如果您 运行 在容器环境(例如您的构建管道)中进行测试,则未设置环境变量可能是 ng 测试在本地计算机上正常工作但无法连接到 google-chrome 在容器中。
我也遇到了这个问题。我在 karma.config.js 文件中做了以下三处更改。
autoWatch: false,
browsers: ['Chrome'],
singleRun: false
browsers: ['PhantomJS']
,这里允许的浏览器是PhantomJs
,但是代码正在尝试Chrome,这不是karma.conf.js.[=14=中指定的浏览器]
更改 karma.conf.js
文件 :
browsers: ['PhantomJS','Chrome', 'ChromeHeadless']
,
chrome- 用于打开新的 chrome 浏览器 window.
ChromeHeadless- 用于 运行 无需打开浏览器的测试 window
确保 Chrome 已安装并添加到 PATH
希望对您有所帮助
在 Windows Chrome 之前安装到 %LOCALAPPDATA%/Google/Chrome/Application。现在它安装到 %PROGRAMFILES%/Google/Chrome/Application。如果您使用 Chrome 的时间很长,那么您在 %LOCALAPPDATA%/Google/Chrome/Application 中有旧版本。
Karma-launcher 正在搜索 Chrome 位置,顺序为 LOCALAPPDATA->PROGRAMFILES-> 'PROGRAMFILES(X86)' ,首先找到旧版本并尝试 运行 它。
只需删除 %LOCALAPPDATA%/Google/Chrome/Application 文件夹
我在将 macOS 更新到 Catalina 后遇到了这个问题。我通过将 Puppeteer 更新到最新版本解决了这个问题。
在 Karma.conf.js
中,将超时增加到 60000
captureTimeout: 60000,
browserDisconnectTimeout: 60000,
browserDisconnectTolerance: 3,
browserNoActivityTimeout: 60000,
对我有用的:
npm un karma-chrome-launcher
npm i karma-chrome-launcher
npm i -g karma-cli
karma init
(并按照提示操作)
如果有人仅在 gitlab-runner 中遇到此错误(但在 shell 中手动 ng 测试工作正常),您可以从此处应用决定: https://forum.gitlab.com/t/running-karma-tests-with-chrome-and-gitlab-ci/14476
决定是:在karma.config.js中,替换
部分browsers: ['Chrome'],
来自
browsers: ['ChromeHeadlessNoSandbox'],
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: 'ChromeHeadless',
flags: ['--no-sandbox']
}
},
错误原因是Chrome不再支持no-sandbox
ng test --watch=false
在 karma.config.js 中使用设置为 false 的监视标志结合调整以下参数对我有用:
browsers: ['ChromeHeadlessNoSandbox'],
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: 'ChromeHeadless',
flags: ['--no-sandbox']
}
},