首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ES6进出口模块

ES6进出口模块
EN

Stack Overflow用户
提问于 2017-08-09 10:57:44
回答 1查看 113关注 0票数 0

我有以下文件结构:

代码语言:javascript
运行
复制
src
  ...
  ListBox
    index.js
    ListBox.jsx
    ListBoxItem.jsx
  ...
  index.js

哪里

src/ListBox/ListBox.jsx

代码语言:javascript
运行
复制
class ListBox extends React.Component {
  ...
}

export default ListBox

src/ListBox/ListBoxItem.jsx

代码语言:javascript
运行
复制
class ListBoxItem extends React.Component {
  ...
}

export default ListBoxItem

src/ListBox/index.js

代码语言:javascript
运行
复制
export { default as ListBox } from './ListBox'
export { default as ListBoxItem } from './ListBoxItem'

src/index.js

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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

};

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-09 11:16:35

如果你仔细观察错误信息,你可以看到webpack期望ListBox\index.jsx,而你称它为ListBox\index.js。您可以通过重命名文件来修复它,或者调整webpack配置以使其接受.js,您可以通过调整解决指令来修复它。

代码语言:javascript
运行
复制
resolve: {... extensions: ['.js','.jsx'] }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45588763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档