使用 karma-webpack 时找不到模块报错
Cannot find module error when using karma-webpack
我有以下 karma.conf.js
文件,我还有一个名为 example.spec.js
的测试文件位于 app/compontents/example/example.spec.js
我正在尝试导入我的 Example.js file
import Example from 'app/components/Example/Example.jsx';
describe('Example Component', function() {
});
但我得到以下错误Error: Cannot find module "app/components/Example/Example.jsx"
我尝试了很多不同的想法,例如./Example.jsx
、./Example
、components/Example/Example.jsx
但每次我都得到相同的错误.
var webpack = require('webpack');
module.exports = function(config) {
config.set({
// milliseconds
browserNoActivityTimeout: 40000,
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['mocha', 'chai'],
// list of files / patterns to load in the browser
files: [
'app/tests/setup.js',
'app/**/*.spec.js'
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'app/tests/setup.js': ['webpack', 'sourcemap'],
'app/**/*.spec.js': ['webpack', 'sourcemap']
},
webpack: {
devtool: 'inline-source-map',
cache: false,
resolve: {
extensions: ['', '.js', '.jsx'],
modulesDirectories: ['node_modules', 'app'],
fallback: __dirname
},
module: {
preLoaders: [],
loaders: [
{ test: /\.(js|jsx)$/, loaders: ['babel-loader'], exclude: /node_modules/ },
],
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('test')
})
]
}
},
webpackMiddleware: {
progress: false,
stats: false,
debug: false,
noInfo: true,
silent: true
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['dots'],
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['PhantomJS'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: true,
plugins: [
'karma-mocha',
'karma-chai',
'karma-webpack',
'karma-sourcemap-loader',
'karma-phantomjs-launcher'
]
});
};
如果您想使用这样的导入,则需要设置 resolve.alias。演示:
resolve: {
alias: {
app: path.join(__dirname, 'app')
}
}
我有以下 karma.conf.js
文件,我还有一个名为 example.spec.js
的测试文件位于 app/compontents/example/example.spec.js
我正在尝试导入我的 Example.js file
import Example from 'app/components/Example/Example.jsx';
describe('Example Component', function() {
});
但我得到以下错误Error: Cannot find module "app/components/Example/Example.jsx"
我尝试了很多不同的想法,例如./Example.jsx
、./Example
、components/Example/Example.jsx
但每次我都得到相同的错误.
var webpack = require('webpack');
module.exports = function(config) {
config.set({
// milliseconds
browserNoActivityTimeout: 40000,
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['mocha', 'chai'],
// list of files / patterns to load in the browser
files: [
'app/tests/setup.js',
'app/**/*.spec.js'
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'app/tests/setup.js': ['webpack', 'sourcemap'],
'app/**/*.spec.js': ['webpack', 'sourcemap']
},
webpack: {
devtool: 'inline-source-map',
cache: false,
resolve: {
extensions: ['', '.js', '.jsx'],
modulesDirectories: ['node_modules', 'app'],
fallback: __dirname
},
module: {
preLoaders: [],
loaders: [
{ test: /\.(js|jsx)$/, loaders: ['babel-loader'], exclude: /node_modules/ },
],
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('test')
})
]
}
},
webpackMiddleware: {
progress: false,
stats: false,
debug: false,
noInfo: true,
silent: true
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['dots'],
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['PhantomJS'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: true,
plugins: [
'karma-mocha',
'karma-chai',
'karma-webpack',
'karma-sourcemap-loader',
'karma-phantomjs-launcher'
]
});
};
如果您想使用这样的导入,则需要设置 resolve.alias。演示:
resolve: {
alias: {
app: path.join(__dirname, 'app')
}
}