У меня express server
работает под pm2
только с одним маршрутом:
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html);
}
и обработчиком события socket.io, который прослушивает «open youtube» (из ранее отправленного index.html
)
io.on('connection', function(socket){
socket.on('open youtube', function() {
exec('start chrome youtube.com'); //yes ik, this is a windows-only solution
console.log('Opening youtube...');
});
});
Пока все работает, когда emit обрабатывается на экспресс-сервере, единственная работающая часть - это console.log()
, а не exec()
(const exec = require('child_process').exec;
)
По какой причине pm2
не позволяет мне запускать команду cmd
и / или как я могу запустить команду cmd
из nodejs
приложения, работающего под pm2
?
РЕДАКТИРОВАТЬ:
Когда я запускаю сервер с запуском npm, а не как процесс pm2, он открывает новую вкладку (как и ожидалось) с youtube.com
РЕДАКТИРОВАТЬ 2:
Дляпо какой-то причине, после того как я запустил pm2, перезагрузил ecosystem.config.js и pm2 save, все заработало.Единственное изменение, которое я сделал в ecosystem.config.js, было изменение exec_mode на exec_mode: 'cluster' вместо fork, который является значением по умолчанию.
Я не знаю, была ли это причина или нет.