Как исправить ошибку 'ReferenceError: не удается найти переменную: require' при запуске модульного теста в Karma, Webpack, PhantomJS
я использую Karma, Webpack, enzyme, PhantomJS для тестирования моего проекта react. Когда я запускаю ниже команды для запуска тестовых случаев,
./node_modules/karma/bin/karma start config/karma.conf.js --single-run --browsers PhantomJS
я получил ниже ошибки:
PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR
ReferenceError: Can't find variable: require
at /dev/test/test.js:3
в строке 3 исходного кода теста.js, я не использовал require
ниже код:
import { expect } from 'chai';
я блуждаю, почему PhantomJS жалуются на эту ошибку.
Ниже приведен мой файл Karma conf:
var path = require('path');
var webpackconf = require("./webpack.config")
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['mocha', 'chai'],
files: [
'../test/**/*.js'
],
preprocessors: {
// add webpack as preprocessor
'../src/**/*.js': ['babel'],
'../test/**/*.js': ['babel'],
'../src/**/*.less': ['babel']
},
webpack: { //kind of a copy of your webpack config
devtool: 'inline-source-map', //just do inline source maps instead of the default
module: {
loaders: [
{
test: /.js$/,
loader: 'babel',
exclude: /node_modules/,
// query: {
// presets: ['es2015', 'react']
// }
},
{
test: /.json$/,
loader: 'json',
},{
test: /.less$/,
loader: "style!css!less",
},
]
},
externals: {
'react/lib/ExecutionEnvironment': true,
'react/lib/ReactContext': true,
'react/addons': true
}
},
webpackServer: {
noInfo: true //please don't spam the console when running in karma!
},
plugins: [
'karma-webpack',
'karma-jasmine',
'karma-sourcemap-loader',
'karma-chrome-launcher',
'karma-phantomjs-launcher',
'karma-mocha',
'karma-chai',
'karma-mocha-reporter',
'karma-babel-preprocessor'
],
babelPreprocessor: {
options: {
presets: ['es2015', 'react'],
sourceMap: 'inline'
}
},
reporters: ['mocha'],
// reporter options
mochaReporter: {
colors: {
success: 'blue',
info: 'bgGreen',
warning: 'cyan',
error: 'red'
},
symbols: {
success: '+',
info: '#',
warning: '!',
error: 'x'
}
},
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
})
};
1 ответов
Я думаю, что вы прокомментировали погрузчика. Без es2015
предустановленный babel может не знать, как бороться с import
заявления. (import
является частью модулей ES6, но еще не стандартна в узле.) Вы пробовали раскомментировать query
и presets
заблокировать?