使nodejs“需要”path无关?

我写了一个相当复杂的node.js项目,并且需要在“require”中写入相对path,这使得我疯狂并且是错误修剪。

有什么办法可以避免这样的东西

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

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

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

根据您的项目目录结构的布局,最好将logging器等内容从主应用程序传递到其他模块(以及更远的地方)。

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

传递其他的东西也会有帮助,比如db连接(或连接池)。 再次,取决于你的项目布局。