【问题标题】:Use of reserved word 'class' with karma and webpack在 karma 和 webpack 中使用保留字“class”
【发布时间】:2017-12-21 17:22:50
【问题描述】:

我正在用 ES6 中的 angularJS 构建一个项目。

我正在尝试使用 istanbul 配置业力测试运行器和覆盖率。

当我尝试使用 Karma 进行单元测试时,出现以下错误:

Use of reserved word 'class'

这是我的业力配置文件:

var path = require('path');

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

        basePath: '',

        plugins: [
            'karma-coverage',
            'karma-jasmine',
            'karma-phantomjs-launcher',
            'karma-webpack',
            'karma-coverage-istanbul-reporter'
        ],

        frameworks: ['jasmine'],

        files: [
            'tests/index.js'
        ],

        preprocessors: {
            'tests/index.js': 'webpack'
        },

        webpack: {
            module: {
                rules: [{
                    test   : /\.js$/,
                    use    : {
                        loader: 'istanbul-instrumenter-loader',
                        query : {
                            esModules: true
                        }
                    },
                    include: path.resolve('src/')
                }, {
                    test: /\.html$/, loaders: ["html-loader"]
                }, {
                    test: /\.less$/,
                    use : [{
                        loader: "style-loader"
                    }, {
                        loader: "css-loader"
                    }, {
                        loader: "less-loader"
                    }]
                }, {
                    test  : /\.woff($|\?)|\.woff2($|\?)|\.ttf($|\?)|\.eot($|\?)|\.svg($|\?)/,
                    loader: 'url-loader'
                }]
            }
        },

        reporters: ['progress', 'coverage-istanbul'],

        coverageIstanbulReporter: {
            reports              : ['text-summary'],
            fixWebpackSourcePaths: true
        },

        port       : 9876,
        colors     : true,
        logLevel   : config.LOG_INFO,
        autoWatch  : true,
        browsers   : ['PhantomJS'],
        singleRun  : true,
        concurrency: Infinity,
    })
};

这是我的tests/index.js 文件

// requires all tests in `project/test/src/components/**/index.js`
const tests = require.context('./specs/', true, /index\.js$/);
tests.keys().forEach(tests);

// requires all components in `project/src/components/**/index.js`
const components = require.context('../src/', true, /\.js$/);
components.keys().forEach(components);

我错过了什么吗?

谢谢。

【问题讨论】:

    标签: angularjs webpack ecmascript-6 karma-runner


    【解决方案1】:

    PhantomJS 目前不支持 es2015+。

    所以你要么需要像 babel-loader 这样的编译器加载器, 或者你需要安装支持新语法的 PhantomJS beta。

    【讨论】:

      猜你喜欢
      • 2018-05-17
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多