1

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

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

更新:

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

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

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

4

3 回答 3

3

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

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

然后用户可以要求他们的根配置并用它来初始化你的模块。

更新针对已编辑的问题:

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);
于 2011-11-14T10:08:23.150 回答
1

我有同样的问题。

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

process.env.PWD

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

于 2012-10-21T11:09:26.930 回答
1

试试这个。

var path = require('path');
console.log(path.dirname(module.parent.filename));
于 2013-07-09T22:01:39.160 回答