问题
I have the following karma.conf.js
file, I also have a test file called example.spec.js
that lives inside app/compontents/example/example.spec.js
I am trying to import my Example.js file
import Example from 'app/components/Example/Example.jsx';
describe('Example Component', function() {
});
But I get the following error Error: Cannot find module "app/components/Example/Example.jsx"
I have tried many different ideas, such as ./Example.jsx
, ./Example
, components/Example/Example.jsx
but each time I get the same error.
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'
]
});
};
回答1:
If you want to use an import like that, you'll need to set up a resolve.alias. Demo:
resolve: {
alias: {
app: path.join(__dirname, 'app')
}
}
来源:https://stackoverflow.com/questions/32860762/cannot-find-module-error-when-using-karma-webpack