SourceNode.fromSourceWithMap不是mocha-env-loader中的函数

时间:2017-04-09 03:53:53

标签: reactjs karma-mocha chunking karma-webpack

我正在尝试将Karma与通用路由集成到React中。我删除了常见的块插件,因为使用karma webpack的常见块时出错了

https://github.com/webpack-contrib/karma-webpack/issues/24#issuecomment-257613167

我现在的错误是:

Uncaught Error: Module build failed: TypeError: SourceNode.fromSourceWithMap is not a function
      at Object.module.exports (/Users/jgs/Projects/react/MyApp/node_modules/karma-webpack/lib/mocha-env-loader.js:16:29)

是否可以使用带有反应和文件分块的karma webpack?

1 个答案:

答案 0 :(得分:0)

如果使用karma-webpack_2 npm模块,在karma-webpack中使用分块的问题似乎得到了解决。

还有额外的工作来配置我的业力配置并重新使用webpack配置中的module.rules数组。

https://github.com/jackygrahamez/react-starter-kit/blob/master/karma.conf.js

const webpackConfig = require('./tools/webpack.config').default[0];

// let commonsChunkPluginIndex = webpackConfig[0].plugins.findIndex(plugin => plugin.chunkNames);
// webpackConfig[0].plugins.splice(commonsChunkPluginIndex, 1);
// commonsChunkPluginIndex = webpackConfig[0].plugins.findIndex(plugin => plugin.chunkNames);
// webpackConfig[0].plugins.splice(commonsChunkPluginIndex, 1);

// let module = webpackConfig;
// console.log(webpackConfig);
webpackConfig.module.rules.push({ test: /\.js$/, loader: 'babel-loader' })
module.exports = function(config) {
    config.set({

        browsers: [ 'Chrome' ], //run in Chrome
        singleRun: true, //just run once by default
        // ... normal karma configuration
        frameworks    : ['mocha'],
        // reporters     : ['mocha'],
        files: [
            // all files ending in "_test"
            'src/*test.js',
            'src/**/*test.js'
            // each file acts as entry point for the webpack configuration
        ],

        preprocessors: {
            // add webpack as preprocessor
            'src/*test.js': ['webpack'],
            'src/**/*test.js': ['webpack']
        },

        // webpack: {
        //     // you don't need to specify the entry option because
        //     // karma watches the test entry points
        //     // webpack watches dependencies

        //     // ... remainder of webpack configuration (or import)
        // },

        // webpack: webpackConfig,
        webpack: {
          devtool: 'inline-source-map',
          // module: {
          //   loaders: [
          //     { test: /\.js$/, loader: 'babel-loader' },
          //     { test: /\.jsx?$/, loader: 'babel-loader' },
          //     { test: /\.css/, loader: 'isomorphic-style-loader' },
          //     // { loader: 'css-loader' },
          //     // { test: /\.(ico|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2)(\?.*)?$/, loader: 'file-loader' },
          //     // { test: /\.(mp4|webm|wav|mp3|m4a|aac|oga)(\?.*)?$/, loader: 'url-loader' }
          //   ]
          // }
         module: webpackConfig.module 
        },        

        webpackMiddleware: {
            // webpack-dev-middleware configuration
            // i.e.
            noInfo: true,
            // and use stats to turn off verbose output
            stats: {
                // options i.e. 
                chunks: false
            }
        },

        plugins: [
            require("karma-webpack"),
            require('karma-mocha'),
            require('karma-chrome-launcher')
        ]

    });
};