2015-08-25 22 views
6

Sto provando a configurare il runner di test Karma su un progetto di webpack su cui sto lavorando. Ho alcuni file di test che ho provato ad includere ma Karma continua a darmi Error: Path is a file '/_karma_webpack_/app/w/tests/components'. Perché MemoryFileSystem fallisce con questo messaggio? Tutto l'aiuto è apprezzato.Il percorso è un errore di file durante il caricamento di test con Karma e Webpack

miei karma.conf.js:

//Require webpack config rather than duplicating it 
var webpackConfig = require('./webpack.config'); 
webpackConfig.devtool = 'inline-source-map'; 

module.exports = function(config) { 
    config.set({ 
    basePath:'', 
    browsers: ['Chrome_without_sandbox'], // Note: PhantomJS has too outdated WebKit, pre ES5, to work with Browserify 
    singleRun: true, 
    customLaunchers: { 
     Chrome_without_sandbox: { 
      base: 'Chrome', 
      flags: ['--no-sandbox'] // w/ sandbox it fails under Docker 
     } 
    }, 
    frameworks: ['mocha'], 
    files: ['./app/w/tests/**/*-test.js'], 
    webpack: webpackConfig, 
    webpackMiddleware: { 
     noInfo: true 
    }, 
    preprocessors: { 
     './app/w/tests/**/*-test.js' : ['webpack'] 
    } 
    }); 
}; 

ho cercato di caricare i file con require.context e bundle di loro, ma il risultato è lo stesso .. così ho pensato che il problema potrebbe essere con ciò che si aspetta da MemoryFileSystem ingresso.

webpack.config.js registro

var webpack = require('webpack'); 
var bower_dir = __dirname + '/bower_components'; 
var config = { 
    //devtool: 'cheap-module-eval-source-map', 
    devtool: 'eval', 
    entry: { 
    app: ['webpack/hot/dev-server', './app/w/scripts/app.js'] 
    }, 
    resolve: { alias: {} }, 
    output: { 
    path: './app/w/dist', 
    filename: 'app.js', 
    publicPath: '/dist/' 
    }, 
    module: { 
    noParse: [], 
    loaders: [ 
     { test: /\.js$/, loader: 'eslint!babel?optional[]=runtime', exclude: /node_modules/}, 
     { test: /\.json$/, loader: 'json'}, 
     { test: /\.png$/, loader: "url?limit=10000&mimetype=image/png" }, 
     { test: /\.woff$/, loader: "url?limit=10000&mimetype=application/font-woff" }, 
     { test: /\.ttf$/, loader: "url?limit=10000&mimetype=application/octet-stream" }, 
     { test: /\.eot$/, loader: "file" }, 
     { test: /\.svg$/, loader: "url?limit=10000&mimetype=image/svg+xml" }, 
     { test: /\.less/, loader: 'style!css!less'} 

    ] 
    }, 
    plugins: new webpack.optimize.UglifyJsPlugin({ 
    minimize: true, 
    sourceMap: false, 
    }) 
}; 

module.exports = config; 

Errore:

ERROR [karma]: [Error: Path is a file '/_karma_webpack_/app/w/tests/components'] 
Error: Path is a file '/_karma_webpack_/app/w/tests/components' 
    at MemoryFileSystem.mkdirpSync (/Users/magnuslien/Documents/internprosjekter/woop-frontend/node_modules/karma-webpack/node_modules/webpack-dev-middleware/node_modules/memory-fs/lib/MemoryFileSystem.js:116:10) 
    at MemoryFileSystem.(anonymous function) [as mkdirp] (/Users/magnuslien/Documents/internprosjekter/woop-frontend/node_modules/karma-webpack/node_modules/webpack-dev-middleware/node_modules/memory-fs/lib/MemoryFileSystem.js:193:34) 
    at Tapable.<anonymous> (/Users/magnuslien/Documents/internprosjekter/woop-frontend/node_modules/webpack/lib/Compiler.js:244:27) 
    at /Users/magnuslien/Documents/internprosjekter/woop-frontend/node_modules/webpack/node_modules/async/lib/async.js:187:20 
    at /Users/magnuslien/Documents/internprosjekter/woop-frontend/node_modules/webpack/node_modules/async/lib/async.js:239:13 
    at _arrayEach (/Users/magnuslien/Documents/internprosjekter/woop-frontend/node_modules/webpack/node_modules/async/lib/async.js:91:13) 
    at _each (/Users/magnuslien/Documents/internprosjekter/woop-frontend/node_modules/webpack/node_modules/async/lib/async.js:82:13) 
    at Object.async.forEachOf.async.eachOf (/Users/magnuslien/Documents/internprosjekter/woop-frontend/node_modules/webpack/node_modules/async/lib/async.js:238:9) 
    at Object.async.forEach.async.each (/Users/magnuslien/Documents/internprosjekter/woop-frontend/node_modules/webpack/node_modules/async/lib/async.js:215:22) 
    at Tapable.emitFiles (/Users/magnuslien/Documents/internprosjekter/woop-frontend/node_modules/webpack/lib/Compiler.js:234:20) 

package.json

"devDependencies": { 
    "babel-loader": "^5.3.2", 
    "browserify": "^11.0.1", 
    "karma": "^0.12.31", 
    "karma-chrome-launcher": "^0.2.0", 
    "karma-mocha": "^0.2.0", 
    "karma-sourcemap-loader": "^0.3.5", 
    "karma-webpack": "^1.7.0", 
    "mocha": "^2.2.5", 
    "proxyquireify": "^3.0.0", 
    "webpack": "^1.11.0", 
    "webpack-dev-server": "^1.10.1" 
    } 

risposta

5

Ho avuto lo stesso problema.

In qualche modo a webpack.config.js non è consentito avere l'app di accesso.

Aggiungi

webpackConfig.entry = {};

appena sotto la linea di

webpackConfig.devtool = 'inline-source-map'; nei tuoi karma.conf.js

questo ha lavorato per me

+0

Questo ha risolto il problema, grazie! Dopo aver applicato la correzione, ho ricevuto un nuovo 'Errore: callback(): il callback era già stato chiamato. Errore, ma ho risolto questo riscrivendo il pattern glob in' files: ['./app/w/tests/*-test js] '. – Magnus

Problemi correlati