webpackJsonp не определен с помощью karma-webpack?

Я создаю шаблон с веб-пакетом и кармой с мокко.

Это конфигурация, которую я использую для karma-webpack. Я новичок в вебпаке.

var path          = require('path');
var webpack = require('webpack');
var entries =  {
  "app": ["./index.js"]
};
var root            = './';
var testSrc         = path.join(root, 'tests/');
var jsSrc           = path.join(root, 'src/javascripts/');
var publicPath      = path.join(root , 'public/');
var filenamePattern = 'index.js';
var extensions      = ['js'].map(function(extension) {
  return '.' + extension;
});


var webpackConfig = {
  context: jsSrc,
  resolve: {
    root: jsSrc,
    extensions: [''].concat(extensions)
  },
  resolveLoader: {
    root: path.join(__dirname, "node_modules")
  },
  module: {
    loaders: [{
      test: /\.js$/,
      loader: 'babel-loader',
      exclude: /node_modules/
    }]
  },
  entry: entries,
  output: {
    filename: filenamePattern,
    publicPath: publicPath
  },
  plugins: [new webpack.optimize.CommonsChunkPlugin({
    name: 'shared',
    filename: filenamePattern,
  })]
};

var karmaConfig = {
  frameworks: ['mocha'],
  files: ['tests/test-index.js'],
  preprocessors: {
    'tests/**/*.js': ['webpack']
  },
  webpack: webpackConfig,
  webpackMiddleware: {
    noInfo: true,
  },
  singleRun: false,
  autoWatch: true,
  colors: true,
  reporters: ['nyan'],
  browsers: ['Chrome'],
  plugins: [
    require("karma-nyan-reporter"),
    require("karma-mocha"),
    require("karma-firefox-launcher"),
    require("karma-webpack"),
    require("karma-chrome-launcher")
  ]
};
module.exports = function(config) {
  config.set(karmaConfig);
};

Когда я запускаю karma start karma.local.conf.js, он не выполняет тесты, потому что в браузере написано, что webpackJsonp не определен. Мне было интересно, если я что-то упустил в этой конфигурации.


person juan garcia    schedule 21.01.2016    source источник


Ответы (3)


Вы можете решить эту проблему, изменив порядок файлов, загружаемых в браузер Karma.

карма.conf.js

files: [
            'build/shared.js',
            'build/**/*.js',
        ]

Общий (в моем случае) — это файл, в котором определен «webpackJsonp». Поместив этот файл в начало файлов, он будет загружен перед другими файлами js. Решение ошибки.

person Carbosound1    schedule 30.03.2016
comment
У вас есть репо, где я могу увидеть этот случай? - person juan garcia; 30.03.2016
comment
Извините за поздний ответ, я очень быстро создал репозиторий на github, ничего не работает, но показывает реальную проблему. github.com/carbosound1/webpack Если вы запустите тест gulp => не можете найти переменную jsonp, прокомментируйте запустите файлы в karma.conf снова, и вы увидите, что ошибка исчезла. (Появятся ошибки, потому что не была выполнена правильная настройка) просто демонстрационные цели - person Carbosound1; 30.03.2016
comment
Нет проблем, если у вас есть решение этой проблемы, было бы здорово, если бы оно было без ошибок, чтобы вы могли выявить то, что нашли, я уже ответил в репозитории проблем github, возможно, его можно было бы закрыть XD. - person juan garcia; 31.03.2016

У меня также была такая же проблема в браузере в моем веб-приложении на основе Asp.Net MVC 5:

"webpackJsonp is not defined"

хотя я не использую Карму. Решение, которое я нашел, состояло в том, чтобы переместить файл фрагмента общих ресурсов в обычное включение на основе тегов сценария. Ранее я загружал этот файл через пакетный файл BundleConfig.cs Asp.Net MVC. Я предполагаю, что иногда по какой-то неизвестной причине этот файл фрагмента общих ресурсов загружается после других файлов моего модуля и, следовательно, жалоб браузера.

Я удалил включение commons.chunk.js из BundleConfig.cs и добавил его на страницу с помощью обычного тега script прямо перед классом пакета:

<script type="text/javascript" src="@Url.Content("~/Scripts/build/commons.chunk.js")"></script>
@Scripts.Render("~/bundles/myModules")
person Faisal Mq    schedule 18.07.2016

Проведя некоторое исследование того, почему и как возникла эта проблема, я обнаружил, что существует плагин веб-пакета, воздействующий на карму.

Таким образом, результатом конфигурации будет:

var path          = require('path');
var webpack = require('webpack');
var entries =  {
  "app": ["./index.js"]
};
var root            = './';
var testSrc         = path.join(root, 'tests/');
var jsSrc           = path.join(root, 'src/javascripts/');
var publicPath      = path.join(root , 'public/');
var filenamePattern = 'index.js';
var extensions      = ['js'].map(function(extension) {
  return '.' + extension;
});


var webpackConfig = {
  context: jsSrc,
  resolve: {
    root: jsSrc,
    extensions: [''].concat(extensions)
  },
  resolveLoader: {
    root: path.join(__dirname, "node_modules")
  },
  module: {
    loaders: [{
      test: /\.js$/,
      loader: 'babel-loader',
      exclude: /node_modules/
    }]
  },
  entry: entries,
  output: {
    filename: filenamePattern,
    publicPath: publicPath
  }
};

var karmaConfig = {
  frameworks: ['mocha'],
  files: ['tests/test-index.js'],
  preprocessors: {
    'tests/**/*.js': ['webpack']
  },
  webpack: webpackConfig,
  webpackMiddleware: {
    noInfo: true,
  },
  singleRun: false,
  autoWatch: true,
  colors: true,
  reporters: ['nyan'],
  browsers: ['Chrome'],
  plugins: [
    require("karma-nyan-reporter"),
    require("karma-mocha"),
    require("karma-firefox-launcher"),
    require("karma-webpack"),
    require("karma-chrome-launcher")
  ]
};
module.exports = function(config) {
  config.set(karmaConfig);
};

Поэтому я удалил плагин веб-пакета CommonsChunkPlugin. Вот еще одна ссылка на эту проблему.

https://github.com/webpack/karma-webpack/issues/24

person juan garcia    schedule 22.01.2016