Express-subdomain路由无法正常工作?

时间:2017-02-20 22:51:26

标签: javascript node.js express

我一直在寻找几天的解决方案,现在试图谷歌和所有,现在我在这里。我正在尝试使用express-subdomain包为我的应用设置子域名。但是在下面的示例中,app始终返回app.get路由并跳过指定的其他子域路由。 我还反过来添加了hosts文件URL,所以我知道这不应该是问题。

由于某种原因,它必须在我的代码中,即使在访问oce.localhost:3000时它总是显示检测区域路由。

请帮帮我:)。

Server.js

var subdomain = require('express-subdomain');
var express = require('express');
var app = express();

// Region routes
var router = express.Router();
var na = require('./routes/region/na.js');
var oce = require('./routes/region/oce.js');

router.use(subdomain('na.localhost', na));
router.use(subdomain('oce.localhost', oce));

app.get('/', function(req, res) {
    res.send('Detect Region and send to correct subdomain!');
});

app.listen(3000);

路由/区域/ oce.js

var
  express = require('express'),
  router = express.Router();

router.get('/', function(req, res) {
    res.send('Your are in OCE Region!');
});

module.exports = router;

而na.js就是oce.js的名字

干杯

1 个答案:

答案 0 :(得分:1)

您要在router变量中设置子域名,但不要告诉您的应用使用它。

你必须这样做:

app.use(router);

您将其替换为当前的app.get

<小时/> 的修改

您也可以将app.get放在app.use(router)之后,以便它可以作为默认路线。 (当您不在ocena时,它将使用它)

<小时/> 经过一些测试后修改

好吧,我已经能够使用express-vhost使其工作了。我刚才更新了你的server.js

var subdomain = require('express-vhost');
var express = require('express');
var app = express();

// Region routes
var router = express.Router();
var na = require('./routes/region/na.js');
var oce = require('./routes/region/oce.js');

subdomain.register('na.localhost', na)
subdomain.register('oce.localhost', oce)

app.use(subdomain.vhost(app.enabled('trust proxy')));

app.get('/', function(req, res) {
    res.send('Detect Region and send to correct subdomain!');
});

app.listen(3000);