2

这是我在karma.config.js中的代码:

我正在为我的项目使用 Webpack 3+。

module.exports = config => {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: ['./src/components/**/*.spec.ts'],
    plugins: ['karma-jasmine', 'karma-phantomjs-launcher'],
    preprocessors: {
      './src/components/**/*.spec.ts': ['webpack']
    },
    mime: {
      'text/x-typescript': ['ts', 'tsx']
    },
    webpack: webpackConfig,
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false,
    webpackMiddleware: {
      noInfo: true
    },
    concurrency: Infinity
  });
};

在我包含这行代码之后:

 plugins: ['karma-jasmine', 'karma-phantomjs-launcher'],

我收到以下错误:

无法加载“webpack”,它没有注册!

如果我没有这条线,一切都会顺利进行。问题是我必须实现 PhantomJS。我该如何解决这个问题?

4

1 回答 1

2

默认情况下,Karma 会加载名称以karma-*开头的所有同级 NPM 模块。

看起来您正在使用新数组覆盖插件,这将阻止加载任何业力 webpack 插件。

因此,当指定一个新的插件数组时,你应该添加karma-*到它:

plugins: ['karma-*', 'karma-jasmine', 'karma-phantomjs-launcher'],

但是,由于您的插件无论如何都带有 karma-前缀,因此它们应该使用默认插件配置自动加载,因此在这种情况下您不需要指定插件数组。

我希望这有帮助。

于 2018-03-01T08:54:27.073 回答