2016-06-07 79 views
2

我的webpack项目依赖于一个依赖“苹果”(组成名称)。 “苹果”依赖依靠NODE_PATH设置为NODE_PATH=/path/to/apple-module。如果您不熟悉这种方法,请阅读How I Work Around The require(“../../../../../../../”) Problem In NodeJS(我不赞同这种方法。)如何为特定模块配置模块回退路径?

我对“apple”模块没有任何控制权。

webpack允许配置fallback路径,当设置为/path/to/apple-module时使得“apple”模块的分辨率工作。但是,这种方法会使整个应用程序模块解析逻辑处于危险之中。

有没有办法设置仅适用于特定模块的回退路径?

下面是使用该图案的公共模块的一个例子:

https://github.com/firstopinion/formatter.js/blob/51c068bed4e78ba5db7f44911f7ae8ef259f692f/dist/common/formatter.js#L8-L10

var patternMatcher = require('pattern-matcher'); 
var inptSel = require('inpt-sel'); 
var utils = require('utils'); 

注意, “图案匹配”, “INPT-SEL” 和 “utils的” 是包的not dependencies 。这些文件包含在./common path中。其结果是,我得到一个错误:

ERROR in ./~/formatter.js/dist/common/formatter.js 
Module not found: Error: Can't resolve 'pattern-matcher' in 'c:\Dev\repositories\krypton\kwak-client\node_modules\formatter.js\dist\common' 
@ ./~/formatter.js/dist/common/formatter.js 11:21-47 

ERROR in ./~/formatter.js/dist/common/formatter.js 
Module not found: Error: Can't resolve 'inpt-sel' in 'c:\Dev\repositories\krypton\kwak-client\node_modules\formatter.js\dist\common' 
@ ./~/formatter.js/dist/common/formatter.js 12:14-33 

ERROR in ./~/formatter.js/dist/common/formatter.js 
Module not found: Error: Can't resolve 'utils' in 'c:\Dev\repositories\krypton\kwak-client\node_modules\formatter.js\dist\common' 
@ ./~/formatter.js/dist/common/formatter.js 13:12-28 

回答

-1

不知道我得到它的权利,但似乎你需要依靠的WebPack别名,看https://webpack.github.io/docs/resolving.html#aliasing

+0

这仅仅是用于设置模块的别名在应用程序本身内。问题是模块试图'require('conf/example.json')',它希望解析为'./ node_modules/apple/conf/example.json',如果设置了'NODE_PATH' 。但是这个设置在webpack安装程序中不起作用。因此,这个问题。 – Gajus