2016-03-04 93 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,我本可以節省幾天的頭痛。

相關問題