使用connect vhost为多个express.js应用程序提供服务

时间:2012-09-08 00:57:33

标签: javascript node.js express connect vhosts

我想使用connect的vhost功能将几个express.js应用程序部署到我的开发者vps。这是我的server.js文件,它应该将请求发送到适当的地方:

var express = require('express')
var quotes = require('quote-of-the-day/lib/app.js');    
var server = express();  
server.use(express.vhost('inspiringquoteoftheday.com',quotes));    
server.listen(80);

运行节点server.js会抛出此错误:

Error: Cannot find module 'quote-of-the-day/lib/app.js' 

即使我可以直接从server.js所在的目录进入app.js。

这是lib / app.js文件,我在其中导出我的快递应用程序(我认为)

// Generated by CoffeeScript 1.3.3
(function() {
  var app, express, pub;

  express = require('express');

  module.exports = app = express();

  pub = __dirname + '/public';

  app.use(express["static"](pub));

  app.use(express.errorHandler());

  app.use(app.router);

  app.set('views', __dirname + '/views');

  app.set('view engine', 'jade');

  app.get('/', function(req, res) {
    return res.render('home');
  });

}).call(this);

2 个答案:

答案 0 :(得分:0)

假设目录结构如下所示:

|-. quote-of-the-day
  |-- server.js <-- the file you list in your question
  |-. lib
    |-- app.js

然后您应该要求app.js

require('./lib/app');

答案 1 :(得分:0)

在这里使用__dirname全局变量可能会有所帮助。 它提供了“当前正在执行的脚本所在的目录的名称。” 因此你可以这样做:

var otherApp = require(__dirname + 'quote-of-the-day/lib/app.js')

http://nodejs.org/docs/latest/api/globals.html