我试图并排运行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脚本作为子域运行,...
非常感谢您查看我的问题,
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);
});
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)
答案 0 :(得分:2)
如果您确实想要运行多个nodejs服务器来支持此设置,则需要在不同的端口上运行它们。一个可以托管在localhost:81上,另一个托管在localhost:82上。为了让他们在同一个端口上玩得很好,你需要在前面使用反向代理。这通常使用 nginx 设置。
另一种方法是使两个应用程序在同一个 http 服务器上运行。查看 fortunejs 文档,我发现它使用了express,它通过以下方式呈现:
Fortune.router属性
路由器的命名空间,实际上是express的实例。
应该可以启动fortunejs并使用其路由器属性添加自己的api方法:
page2