我使用express-subdomain 1.0.5 with express 4为我的网站路由子域名。我有本地主机设置,并且工作正常。在我的主应用程序.js中,我有这个:
//views
app.engine('ejs', engine);
app.set('views',__dirname + '/views');
app.set('view engine', 'ejs');
//subdomains
var developerRoutes = require('./developerRoutes');
app.use(subdomain('test-developer', developerRoutes));
// main routes
var routes = require('./routes');
app.use(routes);
developerRoutes文件如下所示:
var developer = require('../src/developer');
var devRouter = require('express').Router();
devRouter.get('/', developer.developerHome);
module.exports = devRouter;
和开发人员看起来像这样(我希望有~10条路线所以我使用单独的文件):
exports.developerHome = function(req, res) {
console.log('hi developer got here') //this fires, so I know this route is being called
res.render('developerHome', {
data: {
testData: 'hi'
}
});
}
当我尝试test-developer.localhost.dev时,它是404s(并且developerHome.ejs存在)。当我尝试为主域存在但在开发人员路由文件中不存在的任何其他路由(例如test-developer.localhost.dev/about)时,它会呈现主视图。如果我在developer.js中尝试普通的res.send('hi!');
,那就很好了。
我缺少哪些中间件订购?我已尝试在主域和子域行之前和之后放置视图引擎行,没有任何更改。有没有办法让子域路由落到快速错误处理中间件而不是(看起来像)主要路由?
编辑添加 - 如果我强制状态并按如下方式发送HTML有效,但为什么?
exports.developerHome = function(req, res) {
console.log('hi developer got here')
res.render('developer/developerHome',
{data:
{
testData: 'hi'
}
},
function(err, html){
if(err) console.log(err);
res.status(200).send(html);
}
);
}