我想我找到了答案。所以,我发现了这个问题和这个问题。猜猜我的术语是关闭的。
我通过做一些事情解决了我的问题。首先,我将所有路由和 url 更改为“命名空间”(不是真的,但这确实有效)。现在所有路线都/auth/
在他们面前。我对所有链接都做了同样的事情,所以一切正常。
接下来,我从我的 app.js 中删除了服务器部分。所以,而不是这样做:
require('http').createServer(app).listen(app.get('port'));
我只是做:
module.exports = app;
我向 app 对象添加了一些自定义方法:
app.isLoggedIn = auth.isLoggedIn;
app.notLoggedIn = auth.notLoggedIn;
然后,在我的根应用程序中,我只需执行以下操作来加载auth
应用程序。路由、公共文件和所有其他东西都会神奇地发生。很酷。
var auth = require('./vendor/auth/app');
var app = express();
app.configure(function() {
app.use(auth); // use our auth app
// do a lot of root-app related stuff...
});
还要做的事情:
我的auth
应用程序使用了一些会话内容。根据第二个链接,如果我理解正确,app.use(session...)
我的auth
应用程序中的内容会被app.use
. 另外,我想定义一个 EJS 助手来生成我的网址(类似于site_url('/facebook/callback')
然后指向的东西/auth/facebook/callback
)。最后,我需要包含我的根应用程序中的设置。我正在考虑将我的整个app.js
(in auth
) 包装在一个函数中,我将一个配置对象传递给该函数。像这样:
module.exports = function(config) {
var app = express();
app.set('config', config);
// various app settings, routes, etc
// return app so it's available in my root.
return app;
}
我希望这会有所帮助,如果您需要更多信息,我会看看是否可以将一些代码发布到要点上。让我知道!