Karma --auto-watch 不再有效
Karma --auto-watch no longer works
我的 Karma 安装曾经自动观看 - 当我保存 .js 文件时,它会重新运行 测试。几个月没用JavaScript,现在又来用,自动监视功能没用了。这是我的 karma.conf:
module.exports = function (config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '../',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'jQuery/jquery-1.10.2.js',
'jasmine/jasmine.js',
'jasmine-jquery/jasmine-jquery.js',
'Angular/angular.js',
'Angular/angular-route.js',
'Angular/angular-mocks.js',
'Angular/angular-animate.min.js',
'Angular/angular-sanitize.min.js',
'Angular/angular-cache.min.js',
'emcommon.js',
'Moment/moment.js',
'ViewModels/Common/*.js',
'ViewModels/Settings/*.js',
'Tests/Common/*.js',
'Tests/Settings/*.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: {
'../ViewModels/**/*.js': 'coverage'
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress', 'coverage'],
coverageReporter: {
type: 'html',
},
// web server port
port: 9876,
// 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,
usePolling: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Chrome'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false
});
};
我已阅读并遵循建议 here。我试过将 usePolling
设置为 true。我使用了三种不同的程序来保存文件(VS、Sublime 和记事本)来排除这种情况。如果我停止 Karma 并重新启动它,它会拾取更改并按预期 pass/fail,但它不会在 运行ning.
期间看到文件更改
从 Karma 0.12.7 移动到 0.13.0 对问题没有影响。
输出在哪里?
首先,我认为使用以下 CLI 选项查看 运行 的输出会有所帮助:
# add --single-run, or kill the process manually when finished.
karma start karma.conf.js --auto-watch --log-level debug > log.txt
然后把log.txt
的内容粘贴到一个pastebin。它可能太大而无法编辑您的问题。
也许是不同的浏览器?
我也会尝试 运行 与 Chrome
不同的浏览器,我不排除它 可能 是问题的原因karma-runner#895 中的每个示例都将 Chrome
显示为首选浏览器(尽管这是一个老问题并已通过外观解决)。
尝试使用 PhantomJS and/or Chrome Canary,看看是否能解决问题。
去完成任务-运行ner?
您是否有任何机会 运行ner 作为本地设置的一部分?
如果是这样,您可以 杀死 --auto-watch
并在您选择的任务 运行 中使用等效解决方案。
我们设置 g运行t 任务的方式如下:
karma: {
options: {
configFile: 'karma.conf.js'
},
watch: {
background: false,
singleRun: false
}
}
具有以下 karma.conf 设置:
module.exports = function(config) {
config.set({
frameworks: ['mocha'],
basePath: '',
files: [ /** redacted **/ ],
urlRoot: '/base/app/',
reporters: ['progress'],
logLevel: config.LOG_INFO,
browsers: ['PhantomJS'],
singleRun: true
});
};
尝试运行sudo
?
白板配置
运行 karma init newconf.js
,然后试一试:
karma start newconf.js --auto-watch
我认为看到您的测试的一些输出在这里会很有帮助。最好是一些版本号:
- Chrome
- NodeJS
- 业力
- 测试框架(Mocha/Chai、Jasmine)
编辑#1
请试一试 karma.conf,如下所示:
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'some_jasmine_spec.js',
],
reporters: ['progress'],
port: 9000,
colors: true,
logLevel: config.LOG_DEBUG,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false
});
};
some_jasmine_spec.js
文件看起来像这样:
describe('dummy_test', function() {
it('just runs', function() {
expect(true).to.be.false;
});
});
将 some_jasmine_spec.js
文件放入与此精简文件相同的文件夹中 karma.conf,看看它是否会产生不同的结果。
编辑#2
我刚刚注意到您的 files
数组中的最后一行没有被读取。
如果您查看第一个日志文件的输出:
# The last DEBUG [watcher] entry
# 27 - [36m17 07 2015 14:35:37.160:DEBUG [watcher]: [39mWatching "c:/Projects/Gazelle - EstateManager/DEV-Container/(9112) ViewDevice/EstateManagerUI/EstateManagerUI/Scripts/Tests/Settings"
# The last DEBUG [web-server] entry
# 102 - [36m17 07 2015 14:35:38.321:DEBUG [web-server]: [39mserving (cached): c:/Projects/Gazelle - EstateManager/DEV-Container/(9112) ViewDevice/EstateManagerUI/EstateManagerUI/Scripts/Tests/Settings/viewschedulemodule.tests.js
因此,正在读取 ./*/*.js
模式中的 none 个文件。
我会尝试将其更改为 ./**/*.js
,甚至 **/*.js
。
即便如此,如果与未包含的文件相关,虚拟 jasmine 测试应该可以解决问题。
编辑#3
运行这里的想法很少,但是;
我会尝试将 basePath
更改为 ../
并从所有其他文件引用中删除 ../
。这与其说是 'valid' 的担忧,不如说是对我(发痒的)好奇心的抓挠。但是,嘿,尝试 没有坏处。
编辑#4
最后的努力;弹出一个终端并 运行 以下 (抱歉,我在基于 UNIX 的系统上 - 我的 MS-DOS 不符合标准,可以这么说...)。 让我们彻底清理它,杀死缓存,重新安装你需要的包,再试一次。
Cleanup/out
$ rm -rf node_modules # clean out your local node modules
$ npm cache clean # clean out the npm cache
$ npm uninstall karma karma-cli karma-chrome-launcher karma-coverage karma-firefox-launcher karma-ie-launcher karma-jasmine jasmine -g # uninstall assorted karma/jasmine libraries globally
备份
$ mv karma.conf.js karma.conf.bak.js # backup your karma.conf
重新安装
$ npm install karma karma-cli karma-chrome-launcher karma-coverage karma-firefox-launcher karma-ie-launcher karma-jasmine jasmine -g # reinstall assorted karma/jasmine libraries globally
$ npm install # reinstall your local node modules
重新初始化
$ karma init # initialise a new karma.conf.js file
- 尽量少修改新的karma.conf.js文件
$ karma start karma.conf.js --auto-watch --log-level debug
- 可选择将以上内容通过管道传输到新的
log.txt
并上传。
- 这样我们就可以比较两者,看看是否有什么 真的 脱颖而出。
调试
确保在新 karma.conf.js 文件中将 singleRun
设置为 false
,然后弹出连接的浏览器并转到 http://localhost:9876
。
按下调试按钮,打开您的开发工具 (web inspector/console),然后调查重新加载页面时发生的情况。
如果这没有任何区别,我就不知所措了。
郑重声明,我最终通过以下方式修复了它:
- 为我的本地使用新文件夹 node_modules
- 使用 git bash shell
- 确保 PYTHON 环境变量是使用 git bash 样式分隔符设置的
- 正在安装 Karma 版本 v0.12.0
None 它自己工作,无论如何对我来说。希望这对其他人有帮助。
我的 Karma 安装曾经自动观看 - 当我保存 .js 文件时,它会重新运行 测试。几个月没用JavaScript,现在又来用,自动监视功能没用了。这是我的 karma.conf:
module.exports = function (config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '../',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'jQuery/jquery-1.10.2.js',
'jasmine/jasmine.js',
'jasmine-jquery/jasmine-jquery.js',
'Angular/angular.js',
'Angular/angular-route.js',
'Angular/angular-mocks.js',
'Angular/angular-animate.min.js',
'Angular/angular-sanitize.min.js',
'Angular/angular-cache.min.js',
'emcommon.js',
'Moment/moment.js',
'ViewModels/Common/*.js',
'ViewModels/Settings/*.js',
'Tests/Common/*.js',
'Tests/Settings/*.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: {
'../ViewModels/**/*.js': 'coverage'
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress', 'coverage'],
coverageReporter: {
type: 'html',
},
// web server port
port: 9876,
// 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,
usePolling: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Chrome'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false
});
};
我已阅读并遵循建议 here。我试过将 usePolling
设置为 true。我使用了三种不同的程序来保存文件(VS、Sublime 和记事本)来排除这种情况。如果我停止 Karma 并重新启动它,它会拾取更改并按预期 pass/fail,但它不会在 运行ning.
从 Karma 0.12.7 移动到 0.13.0 对问题没有影响。
输出在哪里?
首先,我认为使用以下 CLI 选项查看 运行 的输出会有所帮助:
# add --single-run, or kill the process manually when finished.
karma start karma.conf.js --auto-watch --log-level debug > log.txt
然后把log.txt
的内容粘贴到一个pastebin。它可能太大而无法编辑您的问题。
也许是不同的浏览器?
我也会尝试 运行 与 Chrome
不同的浏览器,我不排除它 可能 是问题的原因karma-runner#895 中的每个示例都将 Chrome
显示为首选浏览器(尽管这是一个老问题并已通过外观解决)。
尝试使用 PhantomJS and/or Chrome Canary,看看是否能解决问题。
去完成任务-运行ner?
您是否有任何机会 运行ner 作为本地设置的一部分?
如果是这样,您可以 杀死 --auto-watch
并在您选择的任务 运行 中使用等效解决方案。
我们设置 g运行t 任务的方式如下:
karma: {
options: {
configFile: 'karma.conf.js'
},
watch: {
background: false,
singleRun: false
}
}
具有以下 karma.conf 设置:
module.exports = function(config) {
config.set({
frameworks: ['mocha'],
basePath: '',
files: [ /** redacted **/ ],
urlRoot: '/base/app/',
reporters: ['progress'],
logLevel: config.LOG_INFO,
browsers: ['PhantomJS'],
singleRun: true
});
};
尝试运行sudo
?
白板配置
运行 karma init newconf.js
,然后试一试:
karma start newconf.js --auto-watch
我认为看到您的测试的一些输出在这里会很有帮助。最好是一些版本号:
- Chrome
- NodeJS
- 业力
- 测试框架(Mocha/Chai、Jasmine)
编辑#1
请试一试 karma.conf,如下所示:
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'some_jasmine_spec.js',
],
reporters: ['progress'],
port: 9000,
colors: true,
logLevel: config.LOG_DEBUG,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false
});
};
some_jasmine_spec.js
文件看起来像这样:
describe('dummy_test', function() {
it('just runs', function() {
expect(true).to.be.false;
});
});
将 some_jasmine_spec.js
文件放入与此精简文件相同的文件夹中 karma.conf,看看它是否会产生不同的结果。
编辑#2
我刚刚注意到您的 files
数组中的最后一行没有被读取。
如果您查看第一个日志文件的输出:
# The last DEBUG [watcher] entry
# 27 - [36m17 07 2015 14:35:37.160:DEBUG [watcher]: [39mWatching "c:/Projects/Gazelle - EstateManager/DEV-Container/(9112) ViewDevice/EstateManagerUI/EstateManagerUI/Scripts/Tests/Settings"
# The last DEBUG [web-server] entry
# 102 - [36m17 07 2015 14:35:38.321:DEBUG [web-server]: [39mserving (cached): c:/Projects/Gazelle - EstateManager/DEV-Container/(9112) ViewDevice/EstateManagerUI/EstateManagerUI/Scripts/Tests/Settings/viewschedulemodule.tests.js
因此,正在读取 ./*/*.js
模式中的 none 个文件。
我会尝试将其更改为 ./**/*.js
,甚至 **/*.js
。
即便如此,如果与未包含的文件相关,虚拟 jasmine 测试应该可以解决问题。
编辑#3
运行这里的想法很少,但是;
我会尝试将 basePath
更改为 ../
并从所有其他文件引用中删除 ../
。这与其说是 'valid' 的担忧,不如说是对我(发痒的)好奇心的抓挠。但是,嘿,尝试 没有坏处。
编辑#4
最后的努力;弹出一个终端并 运行 以下 (抱歉,我在基于 UNIX 的系统上 - 我的 MS-DOS 不符合标准,可以这么说...)。 让我们彻底清理它,杀死缓存,重新安装你需要的包,再试一次。
Cleanup/out
$ rm -rf node_modules # clean out your local node modules
$ npm cache clean # clean out the npm cache
$ npm uninstall karma karma-cli karma-chrome-launcher karma-coverage karma-firefox-launcher karma-ie-launcher karma-jasmine jasmine -g # uninstall assorted karma/jasmine libraries globally
备份
$ mv karma.conf.js karma.conf.bak.js # backup your karma.conf
重新安装
$ npm install karma karma-cli karma-chrome-launcher karma-coverage karma-firefox-launcher karma-ie-launcher karma-jasmine jasmine -g # reinstall assorted karma/jasmine libraries globally
$ npm install # reinstall your local node modules
重新初始化
$ karma init # initialise a new karma.conf.js file
- 尽量少修改新的karma.conf.js文件
$ karma start karma.conf.js --auto-watch --log-level debug
- 可选择将以上内容通过管道传输到新的
log.txt
并上传。 - 这样我们就可以比较两者,看看是否有什么 真的 脱颖而出。
- 可选择将以上内容通过管道传输到新的
调试
确保在新 karma.conf.js 文件中将 singleRun
设置为 false
,然后弹出连接的浏览器并转到 http://localhost:9876
。
按下调试按钮,打开您的开发工具 (web inspector/console),然后调查重新加载页面时发生的情况。
如果这没有任何区别,我就不知所措了。
郑重声明,我最终通过以下方式修复了它:
- 为我的本地使用新文件夹 node_modules
- 使用 git bash shell
- 确保 PYTHON 环境变量是使用 git bash 样式分隔符设置的
- 正在安装 Karma 版本 v0.12.0
None 它自己工作,无论如何对我来说。希望这对其他人有帮助。