Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 因果报应——自动手表不再工作_Javascript_Angularjs_Jasmine_Karma Runner_Karma Jasmine - Fatal编程技术网

Javascript 因果报应——自动手表不再工作

Javascript 因果报应——自动手表不再工作,javascript,angularjs,jasmine,karma-runner,karma-jasmine,Javascript,Angularjs,Jasmine,Karma Runner,Karma Jasmine,我的Karma安装用于自动监视-当我保存一个.js文件时,它会重新运行测试。我已经有几个月没有使用JavaScript了,现在我又开始使用它了,自动观察功能不起作用了。这是我的karma.conf: module.exports = function (config) { config.set({ // base path that will be used to resolve all patterns (eg. files, exclude) bas

我的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
    });
};
我已经阅读并遵循了建议。我已尝试将
usePolling
设置为true。我使用了三种不同的程序来保存文件(VS、Sublime和记事本),以排除这种情况。如果我停止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
的内容粘贴到。它可能太大了,无法编辑你的问题


一个不同的浏览器,也许? 我也会尝试运行与
Chrome
不同的浏览器,我不排除这可能是问题的原因,因为
Chrome
中的每个示例都显示
Chrome
是首选浏览器(尽管这是一个老问题,并且通过外观解决)

用PhantomJS和/或Chrome Canary试一试,看看这是否奏效


和任务执行者一起去? 您是否有一个任务运行程序作为本地设置的一部分? 如果是这样,您可以关闭
--auto-watch
,并在您选择的任务运行程序中使用等效的解决方案

我们设置grunt任务的方式如下:

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

我认为在这里看到测试的一些结果会非常有帮助。最好是一些版本号:

  • NodeJS
  • 业力
  • 测试框架(摩卡/柴、茉莉)

编辑#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 我刚刚注意到,
文件
数组中的最后一行没有被读取。 如果查看第一个日志文件的输出:

# 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
模式中的所有文件都没有被读取

我会尝试将其更改为
/***.js
,甚至
***.js

即便如此,如果虚拟jasmine测试与未包含的文件相关,那么它也应该做到这一点

编辑#3 这里的想法不多,但是

我会尝试将
基本路径
更改为
。/
并从所有其他文件引用中删除
。/
。这与其说是一个“合理”的担忧,不如说是我(发痒)的好奇心引起的。但是,嘿,尝试并没有坏处


编辑#4 最后的努力;打开一个终端并运行以下(对不起,我是基于UNIX的系统——我的MS-DOS不符合标准,可以这么说……)。让我们把它全部清理干净,清除缓存,重新安装所需的软件包,然后再试一次

清理/清除

  • $rm-rf节点模块#清理本地节点模块
  • $npm缓存清理#清理npm缓存
  • $npm卸载karma karma cli karma chrome launcher karma coverage karma firefox launcher karma ie launcher karma jasmine jasmine-g#全球卸载各种karma/jasmine库
备份

  • $mv karma.conf.js karma.conf.bak.js#备份您的karma.conf
重新安装

  • $npm安装karma karma cli karma chrome launcher karma coverage karma firefox launcher karma ie launcher karma jasmine jasmine-g#在全球范围内重新安装各种karma/jasmine库
  • $npm安装#重新安装本地节点模块
重新初始化

  • $karma init#初始化一个新的karma.conf.js文件
    • 对新的karma.conf.js文件进行尽可能少的修改
  • $karma start karma.conf.js--自动监视--日志级调试
    • 或者,将上述内容导入新的
      log.txt
      并上传
    • 这样我们就可以比较两者,看看是否有什么东西真正突出
调试

确保在新的karma.conf.js文件中将
singleRun
设置为
false
,然后弹出打开连接的浏览器并转到
http://localhost:9876

按debug按钮,打开开发工具(web inspector/控制台),调查重新加载页面时发生的情况


如果这没有任何区别,我就不知所措了。

为了记录在案,我最终通过以下方式修复了它:

  • 为本地节点模块使用新文件夹
  • 使用git bash shell
  • 确保PYTHON环境变量是使用git bash样式的分隔符设置的
  • 安装Karma v0.12.0版

对我来说,这一切都无法单独发挥作用。希望这对其他人有所帮助。

您是否在新存储库中安装了karma?由于新版本的karma@gr3g我在新的工作区文件夹中安装了Karma,是的。复制你的Karma.conf,删除它并进行Karma初始化。检查文件之间的差异。如果没有,用一个小项目和一个测试来测试karma,看看它是否有效…好的,这里是pastebin输出:。我已经从Chrome改为Firefox,没有区别。我们没有使用任务运行程序