我编写了一个相当复杂的node.js项目,并且需要在“require”中编写相对路径,这让我感到疯狂并且是错误修剪。
有没有办法避免像这样的东西
logger = require('../../modules/logger');
并且不依赖于路径而不将每个模块转换为完整的npm模块?
答案 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 });
传递其他方式也有帮助,比如数据库连接(或连接池)。同样,取决于您的项目布局方式。