Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 不使用express创建子域_Node.js - Fatal编程技术网

Node.js 不使用express创建子域

Node.js 不使用express创建子域,node.js,Node.js,我试图同时运行express应用程序和fortunejs api,为此,我尝试使用forever和forever monitor 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:re

我试图同时运行express应用程序和fortunejs api,为此,我尝试使用forever和forever monitor

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

});
财富之路 错误
Router.use()需要中间件函数,但得到了一个对象
反对。(/home/ash/www/app.js:21:6)

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

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

财富路由器酒店

路由器的命名空间,它实际上是express的一个实例

只需启动fortunejs并使用其router属性即可添加您自己的api方法:

var fortune = require('fortune');
var options = {
  db: 'demo_app'
};
var app = fortune(options);
app.router.get('/your-own-route', function(req,res) {
  res.send("this is awesome!");
});

此外,我所有的“A”记录都指向相同的IPI,这意味着我可以注释掉app=express();?是的,用《财富》的应用程序把它关掉。如果你将你的fontune应用程序和其他api一分为二,然后导出《财富》应用程序并从另一个地方请求它。不知道,我在尝试使用express、app.set('views',path.join('views')的第一行收到错误;哦,没有看到你在问题中添加了代码。您应该将最后一个应用设置为app=app.router。或者重构以使其更加明确:fortuneApp=fortune(…;expressApp=fortuneApp.router;如果我将其更改为fortuneApp=fortune,app.set会发生什么变化?app.listen如何工作?我真希望可以将其作为单独的路由运行
Router.use() requires middleware function but got a Object     
at Object.<anonymous> (/home/ash/www/app.js:21:6)
var fortune = require('fortune');
var options = {
  db: 'demo_app'
};
var app = fortune(options);
app.router.get('/your-own-route', function(req,res) {
  res.send("this is awesome!");
});