2016-03-04 94 views
1

我有一个webpack配置,用于为同构React应用程序创建一个服务器包。在该配置中,我尝试使用resolve.alias来为另一个模块(parse)别名一个模块(parse/node)。在webpack的文档中,This handy chart约为resolve.alias,这看起来应该是可能的。这是我的别名对象的样子:webpack 1:resolve.alias不会将一个npm模块别名到另一个

alias: { 
    parse: 'parse/node', 
    pubnub: 'static/deps/pubnub/pubnub-3.13.0.min.js' 
} 

我已经使用别名模块pubnub,并且该别名工作在打算。不幸的是,无论我做了解析键似乎并没有改变,导致我的WebPack内置bundle.js要求:

/***/ function(module, exports) { 
    module.exports = require("parse"); 
/***/ }, 

我试图解析为/node_modules/parse/node.js。使用绝对/相对路径似乎不起作用,也不会在末尾添加.js扩展名。在这一点上,我无法弄清楚这是一个webpack bug还是我忽略的东西。任何帮助将不胜感激!下面是一个要点的链接与我完全的WebPack配置:https://gist.github.com/daleee/a0025f55885207c1a00a

[email protected] 
[email protected] 
[email protected] 

回答

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'] 
})], 
..., 

这个故事的寓意是:从boilerplates没有完全了解它做什么不要复制的代码。如果我只是读了我使用的webpack插件的README.md,我本可以节省几天的头痛。

相关问题