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

Using connect vhost to serve multiple express.js apps

本文关键字:应用程序 js 服务 express connect vhost 使用      更新时间:2023-09-26

我想使用connect的vhost功能将几个express.js应用程序部署到我的dev-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);

运行nodeserver.js会引发以下错误:

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

尽管我可以直接从server.js所在的目录cd到app.js中。

这是lib/app.js文件,我在其中导出我的express应用程序(我想)

// 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);

假设一个目录结构看起来像这样:

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

那么你应该要求你的app.js带有

require('./lib/app');

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

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

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