如何为特定模块配置模块回退路径?
问题描述:
我的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”模块的分辨率工作。但是,这种方法会使整个应用程序模块解析逻辑处于危险之中。
有没有办法设置仅适用于特定模块的回退路径?
下面是使用该图案的公共模块的一个例子:
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
这仅仅是用于设置模块的别名在应用程序本身内。问题是模块试图'require('conf/example.json')',它希望解析为'./ node_modules/apple/conf/example.json',如果设置了'NODE_PATH' 。但是这个设置在webpack安装程序中不起作用。因此,这个问题。 – Gajus