【问题标题】:Path is a file error loading tests with Karma and WebpackPath 是使用 Karma 和 Webpack 加载测试的文件错误
【发布时间】:2015-08-25 10:38:54
【问题描述】:

我正在尝试在我正在处理的 webpack 项目上设置 Karma 测试运行程序。我有一些我试图包含的测试文件,但 Karma 不断给我Error: Path is a file '/_karma_webpack_/app/w/tests/components'。为什么MemoryFileSystem 失败并显示此消息?感谢所有帮助。

我的 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']
    }
  });
};

我尝试使用 require.context 加载文件并捆绑它们,但结果是一样的。所以我认为问题可能与 MemoryFileSystem 期望的输入有关。

webpack.config.js

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;

错误日志:

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"
  }

【问题讨论】:

    标签: karma-runner webpack


    【解决方案1】:

    我遇到了同样的问题。

    不知何故 webpack.config.js 不允许有入口应用程序。

    添加

    webpackConfig.entry = {};

    就在这条线下

    webpackConfig.devtool = 'inline-source-map'; 在你的 karma.conf.js 中

    这对我有用

    【讨论】:

    • 这解决了问题,谢谢!应用修复后,我得到了一个新的 Error: callback(): The callback was already called. 错误,但我通过将 glob 模式重写为 files: ['./app/w/tests/*-test.js'] 解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 2016-12-25
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多