Javascript 当与requirejs和karma一起使用时,karma覆盖破坏模块加载

Javascript 当与requirejs和karma一起使用时,karma覆盖破坏模块加载,javascript,requirejs,gruntjs,karma-runner,istanbul,Javascript,Requirejs,Gruntjs,Karma Runner,Istanbul,当我在karma和requirejs中使用coveragereporter时,我在加载一个模块时遇到了问题。更具体地说,正在加载的模块抛出的错误消息相当隐晦,如下所示: 在深入研究之后,我将问题隔离到Karma/Istanbul生成的模块代码中的以下语句中: 如果我从覆盖率报告中删除App.Controller模块,所有功能都会正常工作。模块本身没有什么特别之处,甚至返回一个空白对象,因为模块将导致抛出错误和测试失败 我目前正在使用以下依赖项运行karma: "karma-safari-la

当我在karma和requirejs中使用
coverage
reporter时,我在加载一个模块时遇到了问题。更具体地说,正在加载的模块抛出的错误消息相当隐晦,如下所示:

在深入研究之后,我将问题隔离到Karma/Istanbul生成的模块代码中的以下语句中:

如果我从覆盖率报告中删除
App.Controller
模块,所有功能都会正常工作。模块本身没有什么特别之处,甚至返回一个空白对象,因为模块将导致抛出错误和测试失败

我目前正在使用以下依赖项运行karma:

"karma-safari-launcher": "~> 0.1.1",
"karma-ievms": "~> 0.0.4",
"karma": "~> 0.12.16",
"karma-cli": "~> 0.0.4",
"karma-coverage": "~> 0.2.1",
"karma-requirejs": "~0.2.1",
"phantomjs": "~1.9.7-5",
"karma-phantomjs-launcher": "~0.1.4",
"karma-chrome-launcher": "~0.1.3",
"karma-firefox-launcher": "~0.1.3",
"karma-jasmine": "~> 0.1.0",
"karma-osx-reporter": "~> 0.1.0"
我的karma.conf如下所示:

(function () {
    'use strict';

    module.exports = function (config) {
        config.set({
            basePath: '',
            frameworks: ['jasmine', 'requirejs'],
            reporters: ['progress', 'coverage'],
            browsers: ['Chrome'],
            autoWatch: true,
            logLevel: config.LOG_INFO,
            colors: true,
            captureTimeout: 60000,
            singleRun: false,
            runnerPort: 9100,
            port: 9456,
            hostname: 'localhost',

            preprocessors: {
                "src/Apps/Signup/Slim_Account/**/*.js": ['coverage'],
                "src/Apps/Signup/Slim_Account/*.js": ['coverage']
            },

            coverageReporter: {
                type: 'lcov',
                dir: 'coverage/'
            },

            files: [
                // Deps
                {
                    pattern: 'libs/**/*.js',
                    included: false
                }, {
                    pattern: 'bootstrap/**/*.js',
                    included: false
                }, {
                    pattern: 'src/**/*.svg',
                    included: false
                }, {
                    pattern: 'src/**/*.html',
                    included: false
                }, {
                    pattern: 'test/**/*.html',
                    included: false
                }, {
                    pattern: 'src/**/*.json',
                    included: false
                }, {
                    pattern: 'test/**/*.json',
                    included: false
                },

                'test/libs/velesin-jasmine-jquery/lib/jasmine-jquery.js',
                'test/helpers/lv-helpers.js',
                'test/helpers/lv-matchers.js',

                // src
                {
                    pattern: 'src/**/*.js',
                    included: false
                },

                // Tests
                {
                    pattern: 'test/src/unit/Apps/Signup/Slim_Account/**/*._SPEC.js',
                    included: false
                },

                'test/test-slim-account-signup-main.js'
            ],
            exclude: [
                'src/Apps/Signup/Slim_Account/App.Bootloader.js'
            ]
        });
    };
})();

几天来一直在试图解决这个问题,但都没用。任何帮助或指导都将不胜感激。

一个非常疯狂的猜测:预处理器中第一行的文件是第二行文件的超集;是否
“src/Apps/Signup/Slim_Account/*.js”
会被检测两次?能否尝试从预处理器中删除seconf行?可能是