我正在开发一个NPM包,它需要从应用程序根目录中获取一个模块。可以将其视为需要属性模块的包,该模块由用户放置在应用程序根目录中。
如何获取应用程序根目录的路径?
更新
总结一下我要做的事情,express允许你做这样的事情:
app.use(express.router(myNPMModule.router));
路由器功能将获得app
作为参数。这个想法是允许用户在单独的文件中指定路由,他们只需要遵循某些约定,例如将他们的控制器放在/controllers
文件夹中,我的模块将能够动态地解析路径,然后在正确的模块中调用正确的方法。我已经有了它的工作,但我意识到如果我将它打包在NPM中,我就无法访问应用程序的路径,因此我无法动态调用控制器模块的方法。
答案 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));