NPM - 应用程序根目录的路径

时间:2011-11-14 08:35:34

标签: node.js express npm

我正在开发一个NPM包,它需要从应用程序根目录中获取一个模块。可以将其视为需要属性模块的包,该模块由用户放置在应用程序根目录中。

如何获取应用程序根目录的路径?

更新

总结一下我要做的事情,express允许你做这样的事情:

app.use(express.router(myNPMModule.router));

路由器功能将获得app作为参数。这个想法是允许用户在单独的文件中指定路由,他们只需要遵循某些约定,例如将他们的控制器放在/controllers文件夹中,我的模块将能够动态地解析路径,然后在正确的模块中调用正确的方法。我已经有了它的工作,但我意识到如果我将它打包在NPM中,我就无法访问应用程序的路径,因此我无法动态调用控制器模块的方法。

3 个答案:

答案 0 :(得分:3)

让用户调用一个设置变量的函数:

  myModule.setProps(json)
  OR
  myModule = new MyModule(json)

然后用户可以要求他们的root配置并使用它来启动你的模块。

更新回复编辑过的问题:

Express允许您定义如下路线:

var routes = require('./routes')
app.get('/info', routes.info);

//Routes Module
exports.info = function(req, res) {
  res.render('info', {title: 'Express'})
};

我相信这正是你想要做的。不是吗?

更新2:

您可以使用__dirname

找到当前正在执行的脚本所在的目录
console.log(__dirname);

答案 1 :(得分:1)

我有同样的问题。

我只能找到这个环境变量帮助:

process.env.PWD

它总是指向运行它的应用程序路径的根目录。

答案 2 :(得分:1)

试试这个。

var path = require('path');
console.log(path.dirname(module.parent.filename));