Как я могу заставить karma-webpack уважать заявленные загрузчики?

Я хочу проверить здравомыслие. Я тестирую множество веб-компонентов, используя karma + webpack (так karma-webpack). Само приложение компилируется и все это прекрасно. Но когда я пытаюсь сделать то же самое через karma-webpack (даже используя ту же конфигурацию), это не работает. Он продолжает вырабатывать ошибки при компиляции, когда я импортирую что-либо, кроме js, которое веб-пакет должен был обработать. Итак, для простоты (это безголовые модульные тесты), если это что-то из этого, попытка просто null-loader их:

test.webpack.config.js

module.exports = {
  module: {
    devtool: "inline-source-map",
    module: {
      rules: [
        {
          test: /\.(png|svg|jpg|gif|scss)$/,
          loader: "null-loader"
        },
        {
          test: /\.js$/,
          loader: "babel-loader",
          options: {
            cacheDirectory: true
          }
        }
      ]
    }
  }
};

karma.conf.js:

const path = require("path");

module.exports = function(config) {
  config.set({
    basePath: "",
    singleRun: true,
    browsers: ["ChromeHeadlessNoSandbox", "FirefoxHeadless"],
    customLaunchers: {
      ChromeHeadlessNoSandbox: {
        base: "ChromeHeadless",
        flags: ["--disable-gpu", "--no-sandbox"]
      },
      FirefoxHeadless: {
        base: "Firefox",
        flags: ["-headless"]
      }
    },
    frameworks: ["mocha", "sinon-chai"],
    files: [
      {
        pattern:
          "../../node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js",
        watched: false
      },
      {
        pattern:
          "../../node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js",
        watched: false
      },
      "test/unit/index.js"
    ],
    preprocessors: {
      "test/unit/index.js": ["webpack", "sourcemap"]
    },
    reporters: ["dots"],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    client: {
      mocha: {
        reporter: "html",
        ui: "bdd"
      },
      chai: {
        includeStack: true
      }
    },

    webpack: require("./test.webpack.config"),

    webpackMiddleware: {
      stats: "errors-only"
    },

    webpackServer: {
      noInfo: true
    },

    webpack: {
      output: {
        filename: "[name]"
      }
    }
  });
};

Итоговая ошибка будет примерно такой:

ERROR in ../my/project/src/assets/images/_proto/dashboard.png 1:0 Module parse failed: Unexpected character '�' (1:0) You may need an appropriate loader to handle this file type. (Source code omitted for this binary file)
1
0
275
1

Ответы 1

Итак, мы дважды декларировали webpack. Второе объявление перекрыло первое. : '(

Другие вопросы по теме