node module.paths confusion
问题:即使我在main.js应用程序中添加数组的全局路径,所需的节点模块也不使用我的global module.paths。
示例:
mymain.js
//global modules path
module.paths.push('C:\Users\xuser\AppData\Roaming\npm');
// finds ws in global modules path. Works!
wsmain=require('ws')
// Now load a 3rd party module, which also requires('ws')
C = require('cmod.js');
cmod.js
ws=require('ws'); // fails to find global path
问:我如何确保模块全局也传递给require模块。有没有办法将它作为参数传递?
答案 0 :(得分:0)
我不确定是否有"全球"路径。 node.js文档建议相对于需要它的文件发生默认require
,并在目录链中搜索node_modules
目录。来自docs:
例如,如果文件位于' /home/ry/projects/foo.js'叫 要求(' bar.js'),然后节点将在以下位置查找 这个顺序:
- /home/ry/projects/node_modules/bar.js
- /home/ry/node_modules/bar.js
- /home/node_modules/bar.js
- /node_modules/bar.js
看起来您可以使用NODE_PATH
env var来提供查找模块的地方列表:
https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
根据文档,以下内容可能有效:
NODE_PATH=/path/to/node_modules/where/ws/lives node mymain.js