我正在从事的一个项目中,正在将Webpack从版本1迁移到版本2,其中一个构建是针对依赖项文件的,在该文件中,我使用webpack的expose-loader公开了Window上的所有依赖项。
它工作得很好,除了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'
}
]
}下面是我的巴别塔预设:
"presets": [
"react",
["es2015", { "modules": false }],
"stage-2"
],当我运行构建时,我得到以下输出:

请注意,Redux是通过函数添加的。
你知道怎么解决这个问题吗?
发布于 2017-03-09 05:12:04
看起来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')
],https://stackoverflow.com/questions/42602114
复制相似问题