尝试将 Node.js (Express) 设置为与虚拟主机一起使用,并遇到意外错误

Posted

技术标签:

【中文标题】尝试将 Node.js (Express) 设置为与虚拟主机一起使用,并遇到意外错误【英文标题】:Trying to setup Node.js (Express) to work with vhosts, and getting unexpected errors 【发布时间】:2013-06-02 00:29:55 【问题描述】:

我正在尝试将其设置为与几个虚拟主机一起使用,以便我可以通过一个节点应用程序管理所有内容;但我一直收到此错误。

现在已经很晚了,所以我的思想不是 100%,但希望有人能看到我看不到的东西。

/vhosts/app.js:13
.listen(3000);
             ^
SyntaxError: Unexpected token ;
    at Module._compile (module.js:437:25)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)

代码如下:

var express = require('express');

var app = express();

app
.use(express.vhost('localhost', require('/first/vhost/app.js').app)
.use(express.vhost('localhost2', require('/second/vhost/app.js').app)
.listen(3000);

如果我使用node app 手动运行第一个虚拟主机应用程序,它运行良好。

【问题讨论】:

您在每个 .use 行之后都缺少一个右括号。 【参考方案1】:

正如 Brett 指出的那样,您缺少最后一个括号:

var express = require('express');

var app = express();

app
.use(express.vhost('localhost', require('/first/vhost/app.js').app))
.use(express.vhost('localhost2', require('/second/vhost/app.js').app))
.listen(3000);

您不应该在 Connect 中间件中使用 require。这样也更容易发现:-)

var express = require('express');

var app = express();
var first = require('/first/vhost/app.js').app;
var second = require('/second/vhost/app.js').app;

app
.use(express.vhost('localhost', first))
.use(express.vhost('localhost2', second))
.listen(3000);

【讨论】:

谢谢 - 我犯了愚蠢的错误。这绝对是我超级累的事实。

以上是关于尝试将 Node.js (Express) 设置为与虚拟主机一起使用,并遇到意外错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 node.js (express) 中全局设置内容类型

使用 Node.js 和 Express 将 JSON 数据集显示为表格

Node.js / Express with vhost 与 Sails.js 框架应用程序冲突

Node.js-express框架-cookie设置参数详解和举例

IBM 向 Node.js 捐赠 Express 框架,为 Express 丑闻画上了句号

在 Node JS 中使用 Express 的查询字符串进行预路由