【发布时间】:2013-07-10 06:01:39
【问题描述】:
我正在开发一个 NPM 包,它需要来自应用程序根目录的模块。将其视为需要属性模块的包,该模块由用户放置在应用程序根目录中。
如何获取应用程序根目录的路径?
更新:
总结一下我想要做的事情,express 允许你做这样的事情:
app.use(express.router(myNPMModule.router));
路由器函数将获取app作为参数。这个想法是允许用户在单独的文件中指定路由,他们只需要遵循某些约定,比如将他们的控制器放在/controllers 文件夹中,我的模块将能够动态解析路径,然后调用正确模块中的正确方法。我已经让它工作了,但是我意识到如果我将它打包在 NPM 中,我将无法再访问应用程序的路径,因此我无法动态调用控制器模块的方法。
【问题讨论】:
-
你不应该这样做,而是让用户使用属性调用“构造函数”(或你拥有的任何函数)。
-
查看我对另一个答案的评论。我正在编写一个路由器,我希望用户遵循某些约定。就像将他的控制器放在“controllers/moduleName.js”中一样——然后根据 URL,我将能够调用正确的控制器和方法。
-
试试我写的 npm rainbow。它是一个路由器中间件,与您将 URL 映射到控制器文件路径的要求相同。