我有一个webpack配置,用于为同构React应用程序创建服务器包。在该配置内部,我尝试使用resolve.alias
将一个模块(parse
)另外设置为另一个模块(parse/node
)。关于网络包文档中resolve.alias
的{{3}}使得它看起来应该是可行的。这就是我的别名对象:
alias: {
parse: 'parse/node',
pubnub: 'static/deps/pubnub/pubnub-3.13.0.min.js'
}
我已经在使用模块pubnub
的别名,并且该别名适用于预期。不幸的是,无论我对解析密钥做了什么,似乎都没有改变我的webpack-built bundle.js
中产生的需求:
/***/ function(module, exports) {
module.exports = require("parse");
/***/ },
我正在努力解决/node_modules/parse/node.js
。使用绝对/相对路径似乎不起作用,也没有在末尾添加.js
扩展名。在这一点上,我无法弄清楚这是一个webpack错误还是我忽略的东西。任何帮助将不胜感激!这是我的完整webpack配置的要点链接:This handy chart
node@5.7.0
npm@3.7.5
webpack@1.12.14
答案 0 :(得分:2)
问题在于webpack配置中的以下行:
...,
externals: [nodeExternals({
whitelist: ['webpack/hot/poll?1000']
})],
...,
webpack-node-externals是一个webpack插件,用于自动将node_modules
中找到的模块列入黑名单。在构建后端时,通常不需要将npm模块与最终捆绑包捆绑在一起,因为npm模块已安装在系统上。此黑名单还阻止webpack对任何npm模块进行任何别名。像这样更改whitelist
数组解决了我的问题:
...,
externals: [nodeExternals({
whitelist: ['webpack/hot/poll?1000', 'parse']
})],
...,
这个故事的寓意:不要在没有完全理解它的作用的情况下从锅炉板上复制代码。如果我只是阅读README.md
我正在使用的webpack插件,我本可以节省几天的头痛。