Javascript 加载模块node.js的最佳方法

Javascript 加载模块node.js的最佳方法,javascript,node.js,express,Javascript,Node.js,Express,我的项目有很多文件夹,我经常以以下方式在node.js中加载我自己的模块: var request = require("request"), config = require("../../../modules/config"), urls = require("../../../modules/urls"); var request = require("request"), config = require("config"), urls

我的项目有很多文件夹,我经常以以下方式在node.js中加载我自己的模块:

var request = require("request"),
    config  = require("../../../modules/config"),
    urls    = require("../../../modules/urls");
var request = require("request"),
    config  = require("config"),
    urls    = require("urls");
我有时会移动文件夹,路径也会改变,因此我需要手动调整
。/
零件

我不想将模块移动到node_modules文件夹中,但我希望通过以下方式加载模块:

var request = require("request"),
    config  = require("../../../modules/config"),
    urls    = require("../../../modules/urls");
var request = require("request"),
    config  = require("config"),
    urls    = require("urls");


我的选择是什么?

根据某些条件,您可以尝试执行以下操作

  • 如果脚本是专门为您的应用程序编写的,这意味着它不会与任何其他应用程序一起工作,脚本没有任何依赖项将它们放在
    模块
    目录下,并尝试创建一个公开变量,例如
    全局.basepath
    ,并使用
    path.join
    来构造文件路径并需要它。您还可以在需要模块变量后在主脚本中插入模块变量应用程序
main.js

var config = require('modules/config.js')(_,mongoose,app);
module.exports=function(_,mongoose,app){
 return function(){
  // _,mongoose,app
  this.loadConfigVariable..
 }
}
modules/config.js

var config = require('modules/config.js')(_,mongoose,app);
module.exports=function(_,mongoose,app){
 return function(){
  // _,mongoose,app
  this.loadConfigVariable..
 }
}
  • 如果脚本不是一个具有单独测试的文件,则需要其他供应商模块才能执行,然后创建单个节点模块并将其发布到注册表中,以便于安装主应用程序。 与express一样,还有主应用程序
    express
    ,还有
    express
    使用的模块,如
    express validation
    ,这些模块又有自己的依赖关系

您可以在节点模块中添加符号链接,指向模块所在的位置

例如,添加名为“my_modules”的符号链接,引用“../foo/bar/my_modules”。然后,您的需求将如下所示

var config = require('my_modules/config');
var urls = require('my_modules/urls');

新答案:

相对路径似乎是最简单的选择,毕竟,它允许您从任何位置运行脚本

var config = require("../../config");
旧答案:

我发现,虽然不理想,但也可以使用
process.cwd()

或者,如果process.cwd()在主js文件中设置为全局变量

global.cwd = process.cwd();
然后


你可以运行自己的私有npm并在那里注册。。。?这些模块大多是特定于项目的。如果文件夹中的模块需要文件夹层次结构中较高的模块,这是一个强烈的信号,表明您的代码有味道,应该进行重构,以减少模块之间的耦合。只需将其放在
node\u modules
中,这没什么错,我不想将我的模块与供应商模块放在一个地方,我忽略.gitignore文件中的node_modules文件夹