我有一个遵循标准Express 4格式的快速应用程序。即依赖于顶部,然后是app config,然后是路由,最后是listen。
我试图将我的路线分成分类文件(例如,routes / authentication.js)但是应用程序没有执行依赖项,所以当我运行node app.js
应用程序时因为CLI说护照没有在routes / authentication.js中定义,它不是,因为它在app.js的顶部定义了所有其他依赖项。
我想我的问题是我该如何分享'分享'依赖关系,所以我不必在每个文件的顶部列出它们?这就是我需要单独文件的方式:
app.js
require('./app/routes/authentication')(app);
路由/ authentication.js
module.exports = function (app) {
[routes]
}
答案 0 :(得分:3)
如果在您已经有权访问应用的情况下经常使用相关性模块,则可以在应用中设置值,例如: app.config = require('./config')
。 (但是,为了清楚起见,通常最好在该模块的顶部指定特定模块的依赖关系。除了为每个模块添加更多代码之外没有任何其他危害。)
此外,虽然可以使用构造函数并将app
传递给此函数,但您也可以使用模块来实现此目的。确保您在创建它时导出app
,即var app = module.exports = express();
,然后从其他库中导出var app = require('../app');
。您将在一些Express示例中看到这一点。