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

时间:2014-03-27 09:52:08

标签: javascript node.js express

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

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

我有时会移动文件夹并改变路径,因此我需要手动调整../部分。

我不想将我的模块移动到node_modules文件夹中,但我想以下列方式加载模块:

var request = require("request"),
    config  = require("config"),
    urls    = require("urls");

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

我有什么选择?

3 个答案:

答案 0 :(得分:1)

新答案:

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

var config = require("../../config");

旧回答:

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

var request = require("request"),
    config  = require(process.cwd() + "/modules/config");

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

global.cwd = process.cwd();

然后

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

答案 1 :(得分:0)

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

  • 如果脚本是专门为您的应用程序编写的,这意味着它不能与任何其他应用程序一起使用,并且脚本有任何依赖关系将它们放在{{1 }}目录并尝试创建公开变量,例如modules并使用global.basepath来构造文件路径并要求它。您也可以在应用程序的主脚本中需要它们之后注入模块变量。

path.join

main.js

var config = require('modules/config.js')(_,mongoose,app);

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

答案 2 :(得分:0)

您可以在node_modules中添加一个符号链接,指向您的模块所在的位置。

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

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