node module.paths混乱

时间:2015-08-14 12:57:51

标签: node.js require

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模块。有没有办法将它作为参数传递?

1 个答案:

答案 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