我有以下文件结构:
src
...
ListBox
index.js
ListBox.jsx
ListBoxItem.jsx
...
index.js哪里
src/ListBox/ListBox.jsx
class ListBox extends React.Component {
...
}
export default ListBoxsrc/ListBox/ListBoxItem.jsx
class ListBoxItem extends React.Component {
...
}
export default ListBoxItemsrc/ListBox/index.js
export { default as ListBox } from './ListBox'
export { default as ListBoxItem } from './ListBoxItem'src/index.js
import ... from '...'
import { ListBox, ListBoxItem } from './ListBox'
export {
...
ListBox,
ListBoxItem
}我用webpack当发球手,这是个错误

如您所见,webpack试图在src/ ListBox /index.jsx中找到ListBox模块,而不是src/ListBox/ListBox.jsx。如果我将export { default as ListBox } from './ListBox'更改为export { default as ListBox } from './ListBox.jsx',它就能工作。ListBoxItem也是如此。
这是我的webpack.config.js
module.exports = (env) => {
const config = {
devServer: {
contentBase: path.join(__dirname, 'docs'),
historyApiFallback: true,
hot: true
},
devtool: env.development ? 'cheap-module-eval-source-map' : false,
entry: {
bundle: [
'babel-polyfill',
'./docs/index.jsx'
]
},
output: {
path: path.join(__dirname, 'docs'),
filename: '[name].min.js'
},
module: {
rules: [
{
test: /\.less$/,
exclude: [
path.resolve(__dirname, 'node_modules')
],
use: [
'style-loader',
{
loader: 'css-loader',
options: {
minimize: env.production,
sourceMap: env.development
}
}, {
loader: 'postcss-loader',
options: {
plugins: [
autoprefixer({
browsers: ['last 2 versions']
})
],
sourceMap: env.development ? 'inline' : false
}
}, {
loader: 'less-loader',
options: {
sourceMap: env.development,
sourceMapContents: env.development
}
}
]
},
{
test: /\.(?:jsx?)$/,
use: 'babel-loader',
exclude: [
path.resolve(__dirname, 'node_modules'),
/.*example\.jsx$/
]
},
]
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: (module) => {
return module.context && module.context.indexOf('node_modules') !== -1;
}
}),
new HtmlWebpackPlugin({
template: 'docs/index.html'
}),
],
resolve: {
alias: {
ui: path.resolve(__dirname, './src')
},
extensions: ['.js', '.jsx']
}
};
return config};
发布于 2017-08-09 11:16:35
如果你仔细观察错误信息,你可以看到webpack期望ListBox\index.jsx,而你称它为ListBox\index.js。您可以通过重命名文件来修复它,或者调整webpack配置以使其接受.js,您可以通过调整解决指令来修复它。
resolve: {... extensions: ['.js','.jsx'] }https://stackoverflow.com/questions/45588763
复制相似问题