2016-12-14 6 views
0

Ich versuche, Karma + Jasmine für Unit-Tests meiner App Aurelia (+ Webpack + TypeScript) zu verwenden. Ich habe versucht, die Testvorbereitung zu verwenden, die mit the skeleton kam.Karma ERROR [config]: Ungültige Konfigurationsdatei

Auf dem Skelett Projekt läuft folgende npm Skript perfekt:

"test": "cross-env NODE_ENV=test ./node_modules/karma/bin/karma start test/karma.conf.js" 

Aber wenn ich das gleiche auf meinem Projekt versucht, wirft es Fehler (ohne weitere Stacktrace):

DEBUG [config]: Loading config C:\Path\to\my\Website\test\karma.conf.js 
ERROR [config]: Invalid config file! 

Es tut keine weiteren Informationen darüber, warum die Konfiguration ungültig ist.

Unterhalb der karma.conf.js ist, die mit dem Skelett kam:

"use strict"; 
const path = require('path'); 

module.exports = function(config) { 
    config.set({ 

    // base path that will be used to resolve all patterns (e.g. files, exclude) 
    basePath: __dirname, 

    /* 
    * Frameworks to use 
    * 
    * available frameworks: https://npmjs.org/browse/keyword/karma-adapter 
    */ 
    frameworks: ['jasmine'], 

    // list of files to exclude 
    exclude: [ ], 

    /* 
    * list of files/patterns to load in the browser 
    * 
    * we are building the test environment in ./spec-bundle.js 
    */ 
    files: [ 
     { pattern: 'spec-bundle.js', watched: false }, 
    ], 

    /* 
    * preprocess matching files before serving them to the browser 
    * available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor 
    */ 
    preprocessors: { 
     'spec-bundle.js': ['coverage', 'webpack', 'sourcemap'] 
    }, 

    webpack: require('../webpack.config'), 

    coverageReporter: { 
     reporters: [{ 
     type: 'json', 
     subdir: '.', 
     file: 'coverage-final.json' 
     }] 
    }, 

    remapIstanbulReporter: { 
     src: path.join(__dirname, 'coverage/coverage-final.json'), 
     reports: { 
     html: path.join(__dirname, 'coverage/') 
     }, 
     timeoutNotCreated: 1000, 
     timeoutNoMoreFiles: 1000 
    }, 

    // Webpack please don't spam the console when running in karma! 
    webpackServer: { noInfo: true}, 

    /* 
    * test results reporter to use 
    * 
    * possible values: 'dots', 'progress' 
    * available reporters: https://npmjs.org/browse/keyword/karma-reporter 
    */ 
    reporters: [ 'mocha', 'coverage', 'karma-remap-istanbul' ], 

    // 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: false, 

    /* 
    * start these browsers 
    * available browser launchers: https://npmjs.org/browse/keyword/karma-launcher 
    */ 
    browsers: [ 
     'Chrome', 
     // TODO: https://www.npmjs.com/package/karma-electron 
    ], 

    /* 
    * Continuous Integration mode 
    * if true, Karma captures browsers, runs the tests and exits 
    */ 
    singleRun: true 
    }); 
}; 

Um das Problem zu isolieren, ich habe auch versucht, einen neuen karma.conf.js auf meiner Website root zu starten Generierung mit karma init, und ich konfrontiert genau den gleichen Fehler mit karma start. Im Folgenden finden Sie die Konfigurationsdatei, so erzeugt:

// Karma configuration 
// Generated on Wed Dec 14 2016 07:50:15 GMT+0100 (W. Europe Standard Time) 

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: [ 
     './test/**/*Spec.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'], 


    // 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, 


    // 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, 

    // Concurrency level 
    // how many browser should be started simultaneous 
    concurrency: Infinity 
    }); 
}; 

ich die folgenden Versionen der npm Pakete bin mit:

"karma": "^1.3.0", 
"karma-chrome-launcher": "^2.0.0", 
"karma-coverage": "^1.1.1", 
"karma-jasmine": "^1.0.2", 
"karma-mocha-reporter": "^2.2.0", 
"karma-remap-istanbul": "^0.2.1", 
"karma-sourcemap-loader": "^0.3.7", 
"karma-webpack": "^1.8.0", 
"typescript": "2.1.1", 
"webpack": "2.1.0-beta.27", 

Bitte vorschlagen, wie diese oder zumindest mehr haben aufgelöst werden können (debug) Informationen zu untersuchen.

Update: die unter stacktrace nach rimraf Haben Sie die node_modules ing und die Pakete neu zu installieren:

DEBUG [config]: Loading config C:\Path\to\my\Website\test\karma.conf.js 
ERROR [config]: Invalid config file! 
    TSError: ⨯ Unable to compile TypeScript 
Cannot find type definition file for 'dir1'. (2688) 
Cannot find type definition file for 'dir2'. (2688) 
Cannot find type definition file for 'dir3'. (2688) 
Cannot find type definition file for 'lang1'. (2688) 
Cannot find type definition file for 'dir4'. (2688) 
Cannot find type definition file for 'lang2'. (2688) 
Cannot find type definition file for 'maps'. (2688) 
Cannot find type definition file for 'valueConverters'. (2688) 
Cannot find type definition file for 'views'. (2688) 
    at getOutput (C:\Path\to\my\Website\node_modules\ts-node\src\index.ts:312:17) 
    at C:\Path\to\my\Website\node_modules\ts-node\src\index.ts:343:18 
    at Object.compile (C:\Path\to\my\Website\node_modules\ts-node\src\index.ts:476:19) 
    at Module.m._compile (C:\Path\to\my\Website\node_modules\ts-node\src\index.ts:406:44) 
    at Module._extensions..js (module.js:579:10) 
    at Object.require.extensions.(anonymous function) [as .js] (C:\Path\to\my\Website\node_modules\ts-node\src\index.ts:409:12) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at Object.parseConfig (C:\Path\to\my\Website\node_modules\karma\lib\config.js:342:22) 
    at new Server (C:\Path\to\my\Website\node_modules\karma\lib\server.js:56:20) 
    at Object.exports.run (C:\Path\to\my\Website\node_modules\karma\lib\cli.js:280:7) 
    at Object.<anonymous> (C:\Path\to\my\Website\node_modules\karma\bin\karma:3:23) 
    at Module._compile (module.js:570:32) 
+0

Ungültige Konfigurationsdatei weist im Allgemeinen darauf hin, was an der Datei ungültig ist. Es scheint etwas zu fehlen von der Ausgabe ... –

+0

@PWKad Gibt es sowieso ein ausführliches Protokoll der Ausgabe, als das war alles, was ich auf der Konsole habe. –

Antwort

1

heute Morgen hatte das gleiche Problem haben, fand ich, dass die ts-Knoten-Version dieses Problem behoben zu ändern. Ich kann dieses Problem ohne irgendwelche Konfigurationsänderungen mit [email protected] reproduzieren, aber der gesamte Build funktioniert gut mit [email protected], also scheint es eine bahnbrechende Änderung darin zu geben.