Node.js子域无法正常工作?

时间:2015-02-22 19:05:11

标签: node.js express npm subdomain

我不确定我做错了什么,我正在尝试使用npm subdomain从虚拟子域执行请求。我按照https://github.com/edwardhotchkiss/subdomain

的指示进行了操作
var subdomain = require('subdomain');
var express  = require('express');
var app      = express();
var http     = require('http');
var server   = http.createServer(app);

app.use(subdomain({ base : 'localhost', removeWWW : true }));

app.get('/subdomain/blog/', function(request, response) {
  response.end('BLOG.LOCALHOST: "/"');
});

app.get('/', function(request, response) {
  response.end('LOCALHOST: "/"');
});

在我的计算机主机文件中,我添加了

127.0.0.1   localhost
127.0.0.1   blog.localhost

当我转到http://blog.localhost:3000/时,我会返回LOCALHOST: "/"而不是BLOG.LOCALHOST: "/"

我无法弄清楚为什么,我删除了我的快速路由器,我尝试删除任何路由逻辑和东西,但我仍然继续这样做。显然我做错了什么。我错过了什么?

1 个答案:

答案 0 :(得分:1)

所以我看到他们将 require subdomain 传递到app.use,然后是params。如果我重新格式化他们的示例,看起来更像你的代码:

  

app.use(require('subdomain')({base:'yourdomain.com'}));

请注意,它们不会将任何内容传递给require子域。相反,他们传入JS对象,其中包括他们关闭需求后的基础。

现在您的代码看起来像这样。

  

app.use(subdomain({base:'localhost',removeWWW:true}));

所以请试试这个:

  

app.use(subdomain()({base:'localhost',removeWWW:true}));

或者这个:

  

app.use(require('subdomain')({base:'localhost',removeWWW:true}));

请告诉我这是否可以解决您的问题。