使用 Webpack 2 公开 Redux

Exposing Redux with Webpack 2

我正在将 Webpack 从版本 1 迁移到我正在处理的项目中的版本 2,我拥有的其中一个构建是针对依赖项文件的,其中我公开了对 Window 使用 webpack 的 expose-loader.

除了 Redux 没有暴露外,它工作正常。

这些是我配置的相关部分:

entry: {
    dependencies: [
        'react',
        'react-dom',
        'react-router',
        'redux',
        'react-redux',
        'redux-thunk',
        'es6-promise',
        'isomorphic-fetch'
    ]
},

和:

module: {
    rules: [
        {
            test: /\.js$/,
            use: [
                'babel-loader'
            ],
            include: path.join(__dirname, 'src')
        },
        {
            test: require.resolve('react'),
            use: 'expose-loader?React'
        },
        {
            test: require.resolve('react-dom'),
            use: 'expose-loader?ReactDOM'
        },
        {
            test: require.resolve('react-router'),
            use: 'expose-loader?ReactRouter'
        },
        {
            test: require.resolve('redux'),
            use: 'expose-loader?Redux'
        },
        {
            test: require.resolve('react-redux'),
            use: 'expose-loader?ReactRedux'
        },
        {
            test: require.resolve('redux-thunk'),
            use: 'expose-loader?ReduxThunk'
        },
        {
            test: require.resolve('isomorphic-fetch'),
            use: 'expose-loader?fetch'
        }
    ]
}

还有我的 babel 预设:

"presets": [
    "react",
    ["es2015", { "modules": false }],
    "stage-2"
],

当我 运行 构建时,我得到这个输出:

注意Redux是函数添加的

知道如何解决这个问题吗?

看起来 webpack 无法像在条目列表中那样使用简单的字符串引用自动解析 redux 和其他模块。

console.log 放入 expose-loader/index.js 导致此输出。这表明 Redux 和其他人甚至没有通过 expose loader。

将条目列表更改为此,应该可以解决问题。

   entry: [
        require.resolve('redux'),
        require.resolve('react'),
        require.resolve('react-dom'),
        require.resolve('react-router'),
        require.resolve('react-redux'),
        require.resolve('redux-thunk'),
        require.resolve('es6-promise'),
        require.resolve('isomorphic-fetch')
    ],