【问题标题】:Using connect vhost to serve multiple express.js apps使用 connect vhost 为多个 express.js 应用程序提供服务
【发布时间】:2012-09-01 20:56:15
【问题描述】:

我想使用 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);

运行 node server.js 会抛出这个错误:

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

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

这是我导出 express 应用程序的 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);

【问题讨论】:

    标签: javascript node.js express connect vhosts


    【解决方案1】:

    假设目录结构如下所示:

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

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

    require('./lib/app');
    

    【讨论】:

    • 我的目录结构有点不同......但我忘记了那个漂亮的小 ./ 因为暂时不在 ubuntu 上。谢谢
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 2018-06-16
      相关资源
      最近更新 更多