使nodejs“需要”路径无关?

时间:2013-12-29 11:57:58

标签: node.js

我编写了一个相当复杂的node.js项目,并且需要在“require”中编写相对路径,这让我感到疯狂并且是错误修剪。

有没有办法避免像这样的东西

logger = require('../../modules/logger');

并且不依赖于路径而不将每个模块转换为完整的npm模块?

2 个答案:

答案 0 :(得分:1)

我经常使用“app symlink”,我在node_modules/app处创建指向../app的符号链接。然后在我的代码中,我可以要求没有相对路径的模块:require('app/logger')。它避免了大量../../..路径,并且在移动文件时必须更改它们。但是,由于它依赖于符号链接,并且Windows不支持符号链接,因此它不适用于Windows。因此,我只在我知道只需要在posix系统上工作的应用程序中使用它。

答案 1 :(得分:0)

根据您的项目目录结构的布局方式,最好将记录器之类的东西从主应用程序传递到其他模块(并且远离那里)。

var logger = require('./helpers/logger');
var someModule = require ('./controllers/someModule')({ logger: logger });

传递其他方式也有帮助,比如数据库连接(或连接池)。同样,取决于您的项目布局方式。