如何将Express路由器用于子域

时间:2019-12-21 12:19:08

标签: express subdomain firebase-hosting express-router

我在同一Firebase项目托管下创建了两个站点 我已经将主域连接到一个站点,将子域连接到另一个站点

我已经在firebase功能下安装了Express

我的firebase.json是:

{
  "hosting": [
    {
      "target": "front", 
      "public": "front/public",

      "rewrites": [ 
        {
          "source": "**",
          "function": "app"
        } 
      ]
    },
    {
      "target": "console", 
      "public": "console/public",

      "rewrites": [ 
        {
          "source": "**",
          "function": "app"
        } 
      ]
    }
  ]
}

我的明确index.js是:

const functions = require('firebase-functions');
const express = require('express');
const engines = require('consolidate');

const app = express();
app.engine('hbs', engines.handlebars);
app.set('views', './views');
app.set('view engine', 'hbs');


var subdomain = require('express-subdomain');
var router = express.Router();

router.get('/', function(req, res) {
    res.render('console');
});

app.use(subdomain('console', router));

app.get('/', (request, response) => {
    response.render('front');
});

exports.app = functions.https.onRequest(app);
我的目标是使用路由器将主域和子域分开。 在这里我想使用router.get('/')显示console.example.com 和example.com使用app.get('/')

为此,我正在使用“ express-subdomain”

但是对于我两者,我都得到了app.get('/')

的输出

任何人都可以帮助我实现这一目标吗?将路由器用于子域的标准方法是什么?

===编辑1 ====

我尝试了以下方式:

const functions = require('firebase-functions');
const express = require('express');
const engines = require('consolidate');

const app = express();
app.engine('hbs', engines.handlebars);
app.set('views', './views');
app.set('view engine', 'hbs');


var subdomain = require('express-subdomain');
var routerfront = express.Router();
var routerconsole = express.Router();

routerfront .get('/', (request, response) => {
    response.render('front');
});
routerconsole .get('/', function(req, res) {
    res.render('console');
});

app.use(subdomain('console', routerconsole));
app.use('/', routerfront);


exports.app = functions.https.onRequest(app);

但是主域和子域仍然只有routerfront输出。

===编辑2 ===

最后的工作:

firebase.json:

{
  "hosting": [
    {
      "target": "front", 
      "public": "front/public",

      "rewrites": [ 
        {
          "source": "**",
          "function": "front"
        } 
      ]
    },
    {
      "target": "console", 
      "public": "console/public",

      "rewrites": [ 
        {
          "source": "**",
          "function": "console"
        } 
      ]
    }
  ]
}

index.js

const functions = require('firebase-functions');
const express = require('express');
const engines = require('consolidate');

const front = express();
front.engine('hbs', engines.handlebars);
front.set('views', './views');
front.set('view engine', 'hbs');

const console = express();
console.engine('hbs', engines.handlebars);
console.set('views', './views');
console.set('view engine', 'hbs');




front.get('/', (request, response) => {
    response.render('front');
});

console.get('/', function(request, response) {
    response.render('console');
});



exports.front = functions.https.onRequest(front);
exports.console = functions.https.onRequest(console);

现在我的问题是:启动多个express()实例是否有效? 就我而言:     const front = express();     const console = express();

会在服务器上产生额外的负载吗?

谢谢

0 个答案:

没有答案