[英]run two node application at same time with different port
我有两个节点应用程序使用端口 3000 和 5000。当我在本地主机上运行它时,它运行没有任何错误。但是当两个不同的终端同时运行两个时,最后一个保持执行,第一个销毁会话并在单击时重定向到登录页面在任何页面上。之后,当单击最后一个任何页面时,他们也会丢失会话并重定向到登录。我希望同时运行两个应用程序。
这是管理应用程序的会话和端口
admin.use(session({
secret : 'ssshhhhh',
proxy : true,
resave : true,
saveUninitialized : true
}));
admin.set('port', process.env.PORT || 5000);
var debug = require('debug')('Admin App');
var server = admin.listen(admin.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
这是用于用户应用程序
app.use(session({
secret : 'ssshhhhh',
proxy : true,
resave : true,
saveUninitialized : true
}));
app.set('port', process.env.PORT || 3000);
var debug = require('debug')('User App');
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
问题在于您的会话选项。 对于管理员和用户应用程序,选项中没有定义会话名称。 因此,将使用默认的 session_name,这对于两个应用程序都是相同的。 因此,会话在同时运行时会被折腾。
要解决此问题,请向会话对象添加唯一名称选项,如下所示:
admin.use(session({
name: 'admin_cookie',
secret : 'ssshhhhh',
proxy : true,
resave : true,
saveUninitialized : true
}));
app.use(session({
name: 'user_cookie',
secret : 'ssshhhhh',
proxy : true,
resave : true,
saveUninitialized : true
}));
到目前为止,我发现的最好方法是使用并发调用的包:
https://www.npmjs.com/package/concurrently
package.json 配置如下对我有用:
"scripts": {
"start": "node server.js",
"server": "nodemon server.js --ignore client",
"client": "npm start --prefix client",
"dev": "concurrently \"npm run server\" \"npm run client\""
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.