【问题标题】:Node.js subdomain not working?Node.js 子域不起作用?
【发布时间】:2015-02-23 03:19:38
【问题描述】:

我不确定我做错了什么,我正在尝试使用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: "/"

我不知道为什么,我删除了我的 express 路由器,我尝试删除任何路由逻辑和东西,但我仍然得到那个。显然我做错了什么。我错过了什么?

【问题讨论】:

    标签: node.js express npm subdomain


    【解决方案1】:

    所以我看到他们将 require 子域 传递到 app.use,然后是参数。如果我重新格式化他们的示例,使其看起来更像您的代码:

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

    请注意,它们不会将任何内容传递给 require 子域。相反,他们在关闭 require 之后传入包含 base 的 JS 对象。

    现在您的代码如下所示。

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

    所以试试这个:

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

    或者这个:

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

    如果这能解决您的问题,请告诉我。

    【讨论】:

    • IDK 刚刚发生了什么,但这样做app.use(subdomain({ base : 'localhost', removeWWW : true })); 只是工作,但我认为它完全一样。奇怪的是它现在可以工作,我正在尝试在应用程序中创建另一个服务器,并在它工作的第二个服务器端口上。
    • 我知道它是什么,我正在使用浏览器同步,浏览器同步在端口 3000 上,并且在 9200 上为我的主服务器提供了代理,这与此有关。相信我,虽然我之前确实尝试过直接使用 9200,但当时它不起作用,可能是出了点问题,但现在似乎很好。
    猜你喜欢
    • 2017-06-25
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 2019-04-01
    • 1970-01-01
    • 2018-08-07
    • 2015-09-09
    相关资源
    最近更新 更多