创建没有快递的子域

时间:2015-05-10 16:21:54

标签: node.js

我试图并排运行express app和fortunejs api,为此,我尝试永远使用并永远监控。

server.js文件:

var forever = require('forever-monitor'); 
var child = new (forever.Monitor)('app.js'); //express
var child = new (forever.Monitor)('api.js'); //fortune

child.on('watch:restart', function(info){
      console.error('Restaring script because ' + info.file + ' changed');
});

child.on('exit', function () {
    console.log('your-filename.js has exited after 3 restarts');
});

child.start();

我理解问题可能发生,因为两个脚本都在竞争相同的位置,所以我想我的问题是如何将api脚本作为子域运行,...

非常感谢您查看我的问题,

更新,遵循Emil的回答

api.js

var express = require('express'),
http = require('http'),
path = require('path'),
bodyParser = require('body-parser'),
config = require('./config/config.json'),
db = require('./models/connect');
console.log('\033[2J');
app = express();

var publicUser = require('./routes/publicUser'),
storeUser = require('./routes/storeUser'),
api = require('./routes/fortune'),
adminUser = require('./routes/adminUser');

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use('/', publicUser);
app.use('/store', storeUser);
app.use('/admin', adminUser);
app.use('/api', api);


//Load Server
app.use(express.static('public'));
app.listen(config.port, function(){

    console.log('listening to port ' + config.port);

});

fortune.js route

var fortune = require('fortune');
var express = fortune.express;
var app = express.Router();
var config = require('../config/config.json');

    app = fortune({
        adapter:config.conn.adapter,
        db:config.conn.db,
        host:config.conn.host,
        port:config.conn.port,
        username:config.conn.username,
        password:config.conn.password,
        baseUrl:config.conn.baseUrl
    });

    app.resource('jobs', {
        job: String,
        title: String,
        info: String
    });
    app.resource('user', {

        user: String,
        pass: String    
    }); 

module.exports = app;

错误

Router.use() requires middleware function but got a Object     
at Object.<anonymous> (/home/ash/www/app.js:21:6)

1 个答案:

答案 0 :(得分:2)

如果您确实想要运行多个nodejs服务器来支持此设置,则需要在不同的端口上运行它们。一个可以托管在localhost:81上,另一个托管在localhost:82上。为了让他们在同一个端口上玩得很好,你需要在前面使用反向代理。这通常使用 nginx 设置。

另一种方法是使两个应用程序在同一个 http 服务器上运行。查看 fortunejs 文档,我发现它使用了express,它通过以下方式呈现:

  

Fortune.router属性

     

路由器的命名空间,实际上是express的实例。

Fortune.js docs

应该可以启动fortunejs并使用其路由器属性添加自己的api方法:

page2